ATI's Multi-GPU Solution: CrossFireby Anand Lal Shimpi & Derek Wilson on May 30, 2005 9:00 PM EST
- Posted in
Rendering ModesThe task of getting two separate video cards to handle drawing frames efficiently for a single application transparent to the programmer and end user is quite an undertaking. When life was fillrate limited, 3dfx solved the problem by having each card render odd and even scanlines, which were then combined in analog. This solution is no longer viable, but ATI and NVIDIA have both come up with ways to accomplish the goal.
The absolute most desirable mode of operation that both companies have come up with is alternate frame rendering (AFR). As the name implies, each card renders an entire, separate frame. The major advantage to allowing each card to render an entire frame is that each card is able to handle the geometry processing required as well as the pixel processing.
Alternate frame rendering can't always be used for various reasons (such as the case when one frame depends on the previous result). When alternate frame rendering cannot be used, splitting the current frame vertically is an alternative that both ATI and NVIDIA have implemented. When the work for a single frame is split between two cards, the geometry pipeline can't be divided as easily as the pixel pipeline. As a scene is being rendered, it is not easy to assign objects to different cards as all objects in a scene can affect any of the pixels.
After geometry is sorted, a guess can be made as to how much pixel power will be required for different areas of the screen, and NVIDIA takes advantage of this to distribute the workload more evenly across the two cards. If the top half of the screen isn't as difficult to render, more than half the screen is given to the card assigned to the top. This method definitely helps to keep cards rendering split frames evenly loaded. ATI is capable of splitting the rendering work 60/40 or 70/30 under their scissor mode, but the split is determined per application.
Evenly dividing work is a very important task, and ATI has taken it a step further with CrossFire. They are introducing a rendering mode, which they call Supertiling. This mode splits the entire screen up into 32x32 pixel tiles and hands out a checkerboard pattern to each graphics card for pixel processing. Doing this effectively takes the guess work out of load balancing pixel processing between two cards. The workload averages itself out when the cards share the pixels in areas so near each other.
The caveat of Supertiling is compatibility. It has come to our attention that the "small number of applications" for which Supertiling does not work includes all OpenGL based titles. This means that OpenGL has either AFR or split frame rendering options available. AFR is the most desirable mode, but it would be nice to have a middle ground with more effective load balancing.
In addition to these multi card render modes, ATI has gone a step further to include enhanced AA modes. This is made possible by taking advantage of programmable sample points and their hardware compositing engine.