Triple Buffering on the 360

Quarke

Newcomer
Simply question, really. Why don't we see triple buffered games on the 360? There are quite a few games on the PS3 that employ it, but I can't recall any that use this technique on the 360. Is there some sort of issue with using triple buffering on the 360?
 
Cause 360 uses 10 MB of EDRAM for it's framebuffer. PS3 has 256 MB of dedicated video RAM.
And tiling (when the framebuffer is larger than the EDRAM, it must be done in parts, and copied in/out) is already a bottleneck, triple buffering exacerbates the problem
 
No it doesn't. Triple buffering just requires an extra backbuffer in RAM to swap out. The rendering mechanics are immaterial; when you have rendered the scene, put it in RAM ready to be swapped with the frontbuffer. You are free to queue up a dozen frames if you really wanted to and are happy to add that much latency and memory overhead. The only way a GPU could affect the choice of how many frame buffers to use is if it is hard-wired with a single backbuffer/frontbuffer mechanic and no option to output the render pipeline anywhere else, or some other quirky hardware limit of the display chip.
 
Cause 360 uses 10 MB of EDRAM for it's framebuffer. PS3 has 256 MB of dedicated video RAM.
And tiling (when the framebuffer is larger than the EDRAM, it must be done in parts, and copied in/out) is already a bottleneck, triple buffering exacerbates the problem

Only the backbuffer goes in the edram.
 
You are free to queue up a dozen frames if you really wanted to and are happy to add that much latency
Really, triple buffering shouldn't add any latency at all as long as you can complete rendering of each buffer within the timespan of one frame, if done correctly... You could run essentially double-buffered most of the time, and only fall back on the third buffer those instances when you need to drop a couple frames due to smoke and explosions or whatever.

Not sure if anyone actually does this however. Enable triplebuffer in any Source engine game (like TF2 for example) and you get VERY noticeable mouse lag at all times for example, it's really bizarre. Dunno if it's a driver bug, but the whole screen visibly lags all input by several tenths of a second. Seems Valve really IS dozen-buffering their screen. ;)
 
Really, triple buffering shouldn't add any latency at all as long as you can complete rendering of each buffer within the timespan of one frame, if done correctly... You could run essentially double-buffered most of the time, and only fall back on the third buffer those instances when you need to drop a couple frames due to smoke and explosions or whatever.

Not sure if anyone actually does this however. Enable triplebuffer in any Source engine game (like TF2 for example) and you get VERY noticeable mouse lag at all times for example, it's really bizarre. Dunno if it's a driver bug, but the whole screen visibly lags all input by several tenths of a second. Seems Valve really IS dozen-buffering their screen. ;)

You can enjoy triple buffering with no extra input lag in most games. Just cap the FPS at slightly below your refresh rate. In Source games this can be done through the console. Other engines can require more...er... creative solutions.
 
Isnt that what I said?
No. You said 360 has 10MB eDRAM where PS3 has 256 MBs VRAM, and tiling exacerbates the problem. 360 has 512 MBs available for storing screen buffers, and tiling has no impact on that whatsoever (actually it frees up working space). Multiple buffering is just a FIFO queue of images being passed to the output hardware, and the cost is only RAM space to store the buffers. There is no additional cost incurred by tiling, deferred rendering, forward rendering, raytracing, unfied shaders, discrete shaders, etc!
 
Isnt that what I said?

No.

EDRAM is a temporary high speed buffer. When rendering to any render target, the intermediate result is written to EDRAM. When rendering of the given render target (or tile) completes, then the result stored in edram will get copied to a buffer in main ram. It's job is to reduce the bandwidth/latency hit for things like overdraw and blending.

So when you say the 360 only has 10mb of EDRAM and the PS3 has 256mb of ram - what you really should have said was the 360 has 512mb of ram and a 10mb temporary ultra fast buffer that is used to accelerate rendering by storing the intermediate result of rendering.

That in no way precludes the use of triple buffering - just as everyone has said.

However,

I guess it does mean there is less need to use triple buffering on the 360, because (unless you are tiling) the backbuffer in main memory is only modified during the resolve from edram (which is typically quite fast). Whereas with the PS3, the contents of the buffer is naturally being constructed for the duration of the frame.
 
No. You said 360 has 10MB eDRAM where PS3 has 256 MBs VRAM, and tiling exacerbates the problem. 360 has 512 MBs available for storing screen buffers, and tiling has no impact on that whatsoever (actually it frees up working space). Multiple buffering is just a FIFO queue of images being passed to the output hardware, and the cost is only RAM space to store the buffers. There is no additional cost incurred by tiling, deferred rendering, forward rendering, raytracing, unfied shaders, discrete shaders, etc!

Tiling does incur geometry overhead right (in exchange for smarter/more efficient memory usage) ? eDRAM helps to save tremendous amount of bandwidth.
 
You can enjoy triple buffering with no extra input lag in most games. Just cap the FPS at slightly below your refresh rate. In Source games this can be done through the console. Other engines can require more...er... creative solutions.

Properly implemented it's unnoticeable to most people, but it does still incur a bit of controller lag. If you're rendering ahead an extra frame, that's yet another frame between what you see on screen and what your controller input actually influences. At 30 FPS that's potentially an additional 1/30th of a second of lag. Again unnoticeable to most, but some of the competition twitch gamers will be able to notice it if they go from a double buffering to a triple buffering. It'll throw off their aim slightly and that can be infuriating.

On consoles it's less of an issue though as you're constrained by the limits of the console controller at all times.

Regards,
SB
 
Tiling does incur geometry overhead right (in exchange for smarter/more efficient memory usage) ? eDRAM helps to save tremendous amount of bandwidth.
eDRAM does lots of lovely things, but it's all immaterial to triple buffering! Poly-buffering is nothing more complex than having several frames in RAM ready to be sent to the screen. These frames are produced one at a time exactly the same as double buffering. How you produce those frames is immaterial, and storing images in RAM ready to display doesn't affect your rendering except regards RAM availibility.
 
Back
Top