Triple Buffering on the 360

Agreed ! Outside the scope of triple buffering, can the system work on more than one frame at the same time ?
 
From NeoTechni's OP, he may have confused related concepts. He may be thinking of the serial nature of tiling and edRAM application (One tile at a time right ?).

In any case, I remember triple buffering is a technique to guard against screen tearing. If the developers have other ways to achieve the same or better output, there is no reason why users should insist it.
 
From NeoTechni's OP, he may have confused related concepts. He may be thinking of the serial nature of tiling and edRAM application (One tile at a time right ?).

In any case, I remember triple buffering is a technique to guard against screen tearing. If the developers have other ways to achieve the same or better output, there is no reason why users should insist it.

Well if he has confused the meaning then maybe he should ask for the meaning before posting. Just my two cent.:smile:
 
Sigh, well, I've come to the conclusion that the lack of triple buffered games on the 360 is due to one of the following reasons:

1. Developers think there is no need for it on the 360 and would rather make a game with double buffering, some screen tearing and reduced input lag rather than a triple buffered game, no screen tearing and slightly increased input lag.

2. There is some sort of technical hurdle that prevents the 360 from efficiently using the technique. Although, hard to fathom, the complete lack of any triple buffered games on the 360 does make you wonder.
 
From NeoTechni's OP, he may have confused related concepts. He may be thinking of the serial nature of tiling and edRAM application (One tile at a time right ?).

Not confused. I assumed the downside of tiling was due to the nature of having to copy out parts of the screen from the EDRAM to normal RAM, something you have to do more of when you use more buffers.
 
2. There is some sort of technical hurdle that prevents the 360 from efficiently using the technique. Although, hard to fathom, the complete lack of any triple buffered games on the 360 does make you wonder.
COD games are triple buffered on Xbox 360 & I am pretty sure Forza 3 is as well.

Not confused. I assumed the downside of tiling was due to the nature of having to copy out parts of the screen from the EDRAM to normal RAM, something you have to do more of when you use more buffers.
IIRC increased geometry load is about the only mentionable downside of tiling.
 
Not confused. I assumed the downside of tiling was due to the nature of having to copy out parts of the screen from the EDRAM to normal RAM, something you have to do more of when you use more buffers.

You shouldn't have to copy out any more times than for double buffering.
 
The framerates in CoD4+ are not always 60fps and neither does it instantly drop to 30fps.
 
Not confused. I assumed the downside of tiling was due to the nature of having to copy out parts of the screen from the EDRAM to normal RAM

No not really.
The amount of data copied is always the size of the backbuffer in ram. The main reason for tiling is unresolved AA requires more memory when stored in EDRAM, and the AA resolve happens on chip, so AA doesn't affect the bandwidth hit for copying back to main memory.

At minimum, the RSX needs to write out the same amount of data - the difference being overdraw, blending, AA, etc all add extra graphics memory bandwidth hit. And the memory read/writes aren't as predictable, whereas the EDRAM resolve is a giant buffer copy for each tile (I believe :mrgreen:). So in this sense, tiling will mean more memory copies, but the overall amount of data copied shouldn't drastically change.

It's all rather unrelated to how many buffers are actually stored in memory.
Triple buffering doesn't add any bandwidth overhead - it just uses more memory.

It works like this (forewarning, I'm not 100% exactly sure this is how it works on the 360 :):

At startup, the app allocates enough space for three copies of the AA-resolved 32bit colour buffer. Typically, for 1280x720, this would be 3x1280x720x4bytes = 10.54mb (plus alignment padding).

Now, think of this as buffer A, B and C.
The console simply stores a pointer to which block of memory it is currently displaying. This is typically changed during a vblank (roughly, the point where the frame has been finished being sent the to display) or if you aren't using vsync, once a horizontal equivalent occurs (I forget the specific term). Think of it as the console being told which buffer it should be sending to the screen. No copies to main memory occur during this - just a pointer changes (roughly).

During rendering, the GPU renders to EDRAM, and when finished, the rendered buffer gets AA-resolved and copied to a programmer specified place somewhere in main memory.

So, take the following frame sequence:

Code:
Frame number:X X 0 1 2 3 4 5 6 7 8 9 ...
Resolved to: A B C A B C A B C A B C
Display buf: X X A B C A B C A B C A

(where X is a blank frame)

If that makes sense. So when resolving to buffer A, buffer B is being displayed. The vblank occurs, now C is being displayed, and rendering starts on buffer B. After the next vblank, buffer A is displayed while rendering occurs to buffer B.
In the event that rendering takes too long and the vblank occurs early - then it's OK because there is already a complete buffer waiting, but you can only do this for so many frames before you have to display a buffer twice in a row. The opposite is that if you render too quickly, you naturally must stall and wait.
 
I recall this subject coming up once before where Joker stated and argued that triple buffering was not an issue on the 360. It can be found in this thread here, just look for post #192.

Sigh, well, I've come to the conclusion that the lack of triple buffered games on the 360 is due to one of the following reasons:

1. Developers think there is no need for it on the 360 and would rather make a game with double buffering, some screen tearing and reduced input lag rather than a triple buffered game, no screen tearing and slightly increased input lag.

2. There is some sort of technical hurdle that prevents the 360 from efficiently using the technique. Although, hard to fathom, the complete lack of any triple buffered games on the 360 does make you wonder.

From what people here have said in the past, the answer would be #1, there are people in this very thread telling you it's not #2

COD games are triple buffered on Xbox 360 & I am pretty sure Forza 3 is as well.

Would you have a link confirming this? For some reason I have a hard time believing these games are triple buffered. Probably due to the teams goal to provide the responsive controls and eliminating as much latency as possible.
 
Would you have a link confirming this? For some reason I have a hard time believing these games are triple buffered. Probably due to the teams goal to provide the responsive controls and eliminating as much latency as possible.

As we know COD4+ are entirely v-synced on both platform, but looking at the framerate analysis you'll realize that the framerate graph can go through any value. This wouldn't have been the case if it was double buffered cause then the game would drop to 30 whenever it was not running at perfect 60FPS (due to v-sync being engaged) thereby making the controls very sluggish.
 
As we know COD4+ are entirely v-synced on both platform, but looking at the framerate analysis you'll realize that the framerate graph can go through any value. This wouldn't have been the case if it was double buffered cause then the game would drop to 30 whenever it was not running at perfect 60FPS (due to v-sync being engaged) thereby making the controls very sluggish.

It drops 60 -> 50 -> 40 -> 30 -> 20 IIRC, not straight from 60 to 30 :)

That's why vsynced DB 60fps game is fine, 30fps game not so much.
 
Back
Top