spacediver wrote:heh, I'm completely lost now. I'll do some diagrams later and see if that helps me. I'll post them here. I have a feeling I'm just not grasping something obvious.
One last question before I try to tackle this with diagrams - is there any significance to separating out CPU vs GPU for understanding the general way this works? For now, can I just lump them together as "frame calculation time"?
and thank you for your patience

You're thinking of the first frame going into an empty pipeline, Take a look at what happens to the subsequent frames as the pipeline fills up when limited by 60hz v-sync(it helps to work backwards):
Frame time for frame 1, 2, 3, 4
CPU starts at 0,5,15, 31.67
CPU finished at 5,10, 20, 36.67
GPU starts at 5, 15, 31.67, 48.33
GPU finished at 15, 25, 41.67, 58.33
Monitor starts at 15, 31.67, 48.33, 65
Monitor finished at 31.67, 48.33, 65, 81.67
And compare it to what it looks like if you capped the framerate at 60fps in game(assuming a variable refresh monitor here):
CPU starts at 0,16.67, 33.33, 50
CPU finished at 5, 21.67, 38.33, 55
GPU starts at 5, 21.67, 38.33, 55
GPU finished at 15, 31.67, 48.33, 65
Monitor starts at 15, 31.67, 48.33, 65
Monitor finished at 31.67, 48.33, 65, 81.67
So if you click the mouse at 15.5ms, you would see the results at 65ms in the first scenario, and at 48.33ms in the second.
Obviously you don't get perfectly predictable calculation times in real life, but the backpressure principle does apply.