pcchen said:
Pete said:
Meaning Ben's total would be roughly doubled (assuming a 24- or 32-bit Z-buffer)?
Yes, you need another 43.9MB, and the total becomes 95.1MB. So the 64MB cards are out, and 128MB cards have only 32.9MB left for textures.
Um, once rendering is completed for a frame, there is no longer a need for a z-buffer. So, for double buffering, there is only a need for two color buffers and one z-buffer.
There may be implementations that attempt to optimize memory bandwidth usage by interleaving the frame and z-buffers at the expense of extra memory usage, but I don't see why it would be necessary to do so.
There is also the additional problem of when the framebuffer downsampling is to be done. If the hardware decides to downsample at buffer swap, then the front buffer never needs to be any higher-resolution than the display resolution. If, however, the hardware does the downsampling at scanout, then both color buffers need to be the same size.
In other words, there is some freedom in memory size requirements of FSAA in order to optimize memory bandwidth usage.
Minimum:
(# of buffers - 1 + number of samples * 2) * height * width * bit depth
Medium:
(# of buffers + 1) * (number of samples) * height * width * bit depth
Maximum:
(# of buffers) * (number of samples * 2) * height * width * bit depth
Note that the *2 in both cases is for the z-buffer.
So, minimum memory requirements for 6x FSAA at 1600x1200x32 (triple buffering):
102.5MB
Medium memory requirements (same as above, no copied z-buffer):
175.8MB
Maximum memory requirements (duplicate z-buffer for each color buffer):
263.7MB
Just fyi, it appears ATI downsamples at buffer swap, and nVidia downsamples at scanout. This is likely the cause of the larger performance hits of FSAA at high resolutions for the FX. It's either running out of texture memory, or beginning to enable downsampling at buffer swap, reducing memory bandwidth performance.