DeanoC said:Often different games (and even different parts of the same game) have very different load balances. So haveing a CPU do vertex work may be right in certain situations, which is why an architecture that can reuse processing elements is so handy.
A real situation might be an game using an army. The main portion of the game needs to render 1000's of relative simple people every frame, the VPU vertex unit is good at this kind of 'brute' force work, the pixel shader are simple but the CPU is busy doing all the AI and game code etc. Perfect place for a 'hardware' vertex shader. Now cut to a close-up cutscene, we want awesome detail, skin shaders, hair, cool lighting etc. This has heavy pixel work and vertex work but little CPU power. So use a CPU core or two to do the vertex work and use all the GPU's power for pixel work.
Of course this is even easier if you have things like HLSL where the same code can be switched from CPU to GPU with relatively little work.
Design a architecture to allow load-balances is a good thing, even if 90% of games allows use it in 'standard' configuation (CPU doing light graphics work), there will be some that achieve better results especially when you consider ports where it may not be possible to redo the entire game to soak up CPU power, at least you might get some better graphics by using the a spare core for something (procedural texture, cool lighting (raytracing etc).
So if a programmer wants he can use the CPU to crunch typical code like A.I. utilizing hyper-threading and have it calculate physics along with other general game code. While the VPU splits its resources among vertex and pixel shader work.
Then if another programmer is working on a game little need for A.I. and generic game code, say for example a fighter like Virtua Fighter 5, most of the CPU resources are concentrating on Vertex shaders and the VPU is almost solely working on pixel shaders, soaking up every bit of bandwidth available in order to produce high quality rendered pixels.