Originally Posted by
Artic_Kid
I understand why the push-buffer is there (to handle the asynchrony between the two processes: CPU and GPU. Apparently the central issue involves the "graphics port", which (under the approach I mentioned previously, where the port is handled by a special DMA controller on the graphics board) would always be free. That is, any data thrown at the graphics port by the CPU would immediately be snatched up by the DMA controller on the graphics board -- so the CPU would never have to "wait". Rather, the CPU just throws the commands at the graphics port as fast as it can, and the DMA controller will keep up. This requires zero overhead for the CPU. Also, since the graphics would be maintaining the push-buffer, the GPU could begin processing it whenever it is ready, rather than have to "wait" for the push-buffer to be brought-in in its entirety. I see this approach as a win-win situation for the CPU & GPU.
If I understand you right, you're saying there's something about the graphics port that (under the approach I suggested) would cause it to be slow and thereby cause the CPU to "wait". I don't yet see that as the case. Can you see my reason why?