Maes
I like big butts!

Posts: 8664
Registered: 07-06 |
Spleen said:
Wait, really? I thought the CPU was the bottleneck on ZDoom WADs, since the calculations of the software renderer aren't actually being done by the video card, and all it actually sees is the screen data.
The video bandwidth required is just a function of the screen's resolution, bit depth, and refresh rate, and is pretty much constant no matter what the internal renderer does.
The problem is that e.g. in a puzzle game like e.g. solitaire you can just update a few pixels here and there, in Doom you have to redraw every single pixel. 35 or more times a second, if you can keep up. That is "full motion" animation.
A 1024x768 resolution has more than twice the pixels of 640*480, so for a given bandwidth there's a resolution-frame rate tradeoff.
Yeah, the time needed to push the data from the game's screen buffer to the video card is probably small compared to the calculations done inside the engine, but it becomes significant when you're moving towards the low end in both CPU and videocards terms. And by low end I mean all the way down to Pentium I CPUs and S3 video cards (or worse).
Factor in lower memory speeds, lower FSB speeds, shared ram etc. and you'll see how pushing the data around becomes a significant bottleneck. Vanilla Doom never had to render at anymore than 320*200, yet there were videocards that couldn't keep up and were actually part of the total bottleneck. Just moving 1024x768 pixels @ 70 fps requires a bandwidth of 200 MB/sec, which is way beyond what the PCI bus can provide, and is even a stretch for AGP 1x. A 3D accelerated videocard will contain most of this enormous bandwidth on its own board, and will only download texture data and transform instructions from the system's RAM.
Sure, on a modern system, you can give maybe 1% of CPU time to screen rendering and the system bus won't even break a sweat, even in software mode, and devote the remnant 99% to engine calculations.
On older systems, you must start shifting those ratios: 10/90, 20/80, 30/70...and perhaps even lower. Of course under a certain point, the game is just not playable anymore.
|