Ailuros said:
Scott C said:
All forms of AA so far on "traditionals" require a large footprint of memory used. For a 32 bit 1600x1200 framebuffer and 6x AA you need 5x4x1600x1200 = 36MB of RAM for just the back buffer. Double that if you add the z-buffer. Current compression schemes mean that this memory is sparsely used, but it all has to be allocated and reserved.
At 1600x1200 with 6xAA, our buffer consumption is over 100 MBs of local memory space. Going to 8xAA would have blown passed 128MB.
http://www.3dcenter.de/artikel/2003/11-06_english.php
I should have clarified a little. If you check my math, the 36MB is the difference between no FSAA and using 6xFSAA for one buffer. There are multiple buffers, and if you are triple buffering you need two big back buffers. That means more than 100MB extra, and nearly 128MB if you include all of it and not just the delta between no AA and 6x.
A TBDR requires no extra memory for AA, and no z-buffer at all, for a total savings of over 100MB in the above case. Go up to 8x or 16x AA.... The extra space needed for binning more tiles compares favorably to the extra space for a traditional renderer doing SSAA or MSAA as samples per pixel increase.
Dave B(TotalVR) said:
There are two buffers, one stores vertex pointers the other stores ermm, cant remember had too much beer
heh, I don't recall exaclty either, but my guess is an array of vertices and a list of indexes into this array that represent all the triangles, strips, and fans (or curved surfaces, whatever) that are at least partially in the bin for the tile.
Regardless of whether you can determine whether all triangles for a bin are sent, you can always send and bin the next frame while the previous is rendering. And the previous can always deallocate as it goes.
I agree space won't be a problem, and furthermore even in an extreme case, without good optimizations, bandwidth won't either. We might get say 20MB of geometry that requires a write and two reads, for a total of 60MB/frame. At 100 frames/sec, this is 6GB/sec. Just Z-buffer access on a traditional renderer at high resolution with FSAA is equivalent. Obviously this is a horribly bad worst case with no geometry compression or other optimizations. If you consider the incrimental geometry bandwidth needed over a traditional when both are using vertex shaders and vertex buffers, the relative difference is even less important.