Original Post
Mainly I'm curious about drivers, so this is maybe a low-level question about how the API interacts with the driver which interacts with the video card. I would just like to know what happens when. For instance, does the driver immediately dispatch commands to the video card to render as it receives them from the API... or does it buffer an entire frame of commands, and only then submit them in one big chunk at the VSync? It seems like the latter case would give the best balance of CPU and GPU performance but would cause an extra frame of lag. Another question relates to the GDC'04 paper OpenGL Performance Tuning. It focuses on identifying application bottlenecks, and on page 8 it addresses CPU Bottlenecks. On a bullet titled "Driver or API limitations" it has "Too many state changes per draw" listed as the main cause. Everybody knows that state changes are bad, but I'd always envisioned them as bad because of GPU stalling... not because of a CPU API stall. Can anyone verify that it is actually a CPU bottleneck and not actually a GPU limitation? This paper was presented as a joint effort of ATI and NVidia at the most watched developer event in the world, so I can't doubt its veracity... I guess it disspells a long-held notion I had about GPU/CPU performance balancing.