Thank you for such in depth response. How long is additional latency with triple buffering? Is it always one frame or is one frame lag worst case scenario?
What happens in his case:
Front buffer: frame 1
Back buffer 1: frame 2
Back buffer 2: gpu processing frame 3
--monitor refresh-- (circular flip)
Front buffer: frame 2
Back buffer 1: gpu processing frame 3
Back buffer 3: empty?
is second state correct?
Also wouldn't detached input, logic & physics loop that is running faster than graphic part give similar result as frame skipping?
Input, logic & physics:1,2,3,4,5,6,7,8,9,...
Graphics:1 ,2 ,4 ,5 ,7, 8 ,...
So effectively graphics is skipping frames 3 & 6. How can this form of frame skipping be better than Anand's frame skipping? I know I am asking a lot of questions but please bear with me. I understand it can reduce input lag, but wouldn't skipping input,logic&physics frames produce the same stuttering effect as Anand's frame skipping?
Also now we are talking about synchronizing three loops:
1) Input, logic & physics
2) Graphics
3) Monitor refresh rate
the CPU may be issuing 4 frames, but the GPU is still presenting the front buffer, the 1st backbuffer is waiting to be presented, and the 2nd backbuffer is also waiting; and the CPU wants a 4th one.
So, instead of using quadruple buffering or waiting, the Anandtech suggest the method of dropping the contents of the 2nd backbuffer and replace it with the contents of that 4th frame.
One mistake you made here I think. I think Anandtech suggest the method of dropping the contents of the 1st backbuffer (because it has the oldest frame) and start calculating/writing contents of that 4th frame in it. So the monitor will end up showing frames 1, 3, 4. And it is the GPU that must be ready for the 4th frame for that to happen, not just CPU. As we are focusing on synchronizing graphics and monitor refresh rate. By dropping one frame we have given GPU more time to process 4th frame right?