Load-balancing methods in CrossFire
If you're familiar with NVIDIA's SLI, the methods used for balancing the load between two graphics cards in CrossFire will be largely familiar. These modes are:
- SuperTiling This method is the default for Direct3D applications, and it's also the only mode unique to CrossFire. The screen is subdivided into a checkerboard-like pattern of 32x32-pixel squares, with one card rendering what would be the red squares on the checkerboard, and the other rendering what would be the black squares on the board. ATI says this method distributes the load between the cards neatly and efficiently, but SuperTiling offers benefits only in terms of pixel-pushing power, not geometry computation. Both cards must compute the underlying geometry for each frame individually. SuperTiling is not supported in OpenGL.
- Scissor mode NVIDIA calls this mode "split-frame rendering," but scissor mode is the same basic thing. The screen is split horizontally, with one card rendering the top half of the frame and the other card rendering the bottom half. In OpenGL applications, the split between the frames is static at 50% per card. Direct3D applications get dynamic load balancing, with the split between the cards varying on a frame-by-frame basis. As with SuperTiling, scissor mode doesn't split up the work of geometry computation. Scissor mode is the default load-balancing method for OpenGL apps.
- Alternate-frame rendering The king of all multi-GPU load balancing modes is alternate-frame rendering, or AFR for short. AFR interleaves full frames rendered by the two cards, so that, say, the master card renders odd frames and the slave card renders even ones. This is the preferred load-balancing mode whenever possible, because AFR shows markedly better performance scaling than other modes. Part of the reason for AFR's good performance is the fact that it splits the geometry processing load between the two cards evenly, something no other mode does.
- SuperAA CrossFire can also be used to improve image quality instead of raw performance, thanks to its SuperAA mode. ATI announced SuperAA along with the rest of the CrossFire concept back in June, and NVIDIA has since delivered its own SLI antialiasing mode to match. In SuperAA, each card renders a frame with some degree of antialiasing, and then the two images are blended to yield twice the effective antialiasing. The sample pattern used by each card is different, so that the resulting image gets twice as many unique samples. We will discuss SuperAA and its sample patterns in more detail later, but we should note that ATI offers four SuperAA modes that it has named 8X, 10X, 12X, and 14X AA. In the case of CrossFire, SuperAA images are blended by the Xilinx FPGA-based compositing engine, and SuperAA performance may be gated by the computational power of the FPGA chip.
Although SLI antialiasing works in both OpenGL and Direct3D applications, SuperAA is restricted to Direct3D only.
Perhaps because CrossFire will accelerate most applications without outside help, ATI offers users very little control over CrossFire rendering modes. It's possible to disable Catalyst A.I. and thus force the use of the default load-balancing modes for Direct3D and OpenGL, and users may choose the SuperAA mode they wish to use. Otherwise, the user has little ability to tweak CrossFire, and outside of the occasional checkerboard pattern flickering on the screen when exiting an app in SuperTiling mode, there's no visual indicator to tell you which load-balancing method is active. I asked ATI for a list of CrossFire accelerated games, and they refused to provide one.
Contrast this approach to SLI, where NVIDIA offers the option of a visual load-balancing graphic, extensive control over application profiles and SLI rendering modes via its "Coolbits" registry key, and a long list of SLI-accelerated games. ATI says it has no plans to expose this degree of user control in CrossFire.
NVIDIA has also said repeatedly that it will give developers access to SLI modes via software, and the upcoming game F.E.A.R. will be among the first to include native SLI support out of the box. ATI says it doesn't have plans to expose access to CrossFire rendering modes to developers, although it is working with developers on making sure they write CrossFire-compatible software.
Speaking of that, one potential fly in the ointment is the ever-growing use of techniques like render-to-texture that don't play well with distributed rendering schemes like SLI and CrossFire. ATI says that problematic data is passed back and forth between cards via the PCI Express connection as needed, and that most of the time it's not a performance problem. I think it could well become a significant drag on performance as games use more advanced rendering methods in the future, and both ATI and NVIDIA will have to deal with it.
Master cards: take your pick of two
For the Radeon X800 family, ATI will initially supply two different master cards that will match up to a wide range of slave cards. At a list price that ATI claims will be $349, the Radeon X850 XT CrossFire Edition will be clocked like a Radeon X850 XT, feature 256MB of RAM, and will be capable of running in tandem with any PCI Express-based Radeon X850 card, including the Pro and XT Platinum Edition.
ATI also plans to offer a Radeon X800 CrossFire Edition card at a purported $299 list price for the 256MB version. This card will be clocked at the same speed as a Radeon X800 XL and should offer compatibility with any Radeon X800-class PCI Express graphics cardthat is, anything but the X850 series. The list of compatible cards even includes the older Radeon X800 XT and X800 Pro cards.
ATI initially announced plans for a Radeon X800 CrossFire Edition card with 128MB of RAM and a $249 price tag, but those plans were apparently scrapped. ATI says its board partners are free to manufacture such cards if they wish. Board partners can also make the higher-end X800 and X850 CrossFire Edition cards, or they can buy them from ATI. I'd expect the first wave of master cards to come from ATI, whether they bear ATI's name or not. Frankly, I wouldn't expect board makers to focus much attention on X800-series master cards of any flavor with the next generation of ATI GPUs coming soon.
How a CrossFire Edition card will handle running with a mismatched slave card depends on the situation. For example, in the case of the Radeon X850 XT Platinum Edition, the master card will run at its regular, stock speeds and the Platinum Edition card will run at its native, slightly faster clock speeds. In the case of the Radeon X850 Pro, which has only 12 pipes, the 16-pipe master card will scale itself back to only 12 pipes by disabling four. The same principles apply for the X800 series.
I suppose it's nifty that CrossFire configurations can include mismatched cards, but it's mostly just a necessity given the two flavors of CrossFire Edition master cards. The performance ramifications of these mismatched configurations will probably depend somewhat on the load-balancing method that's in use, but I'd expect a mismatched CrossFire rig to perform more or less like a pair of the slower of the two cards. Radeon X800 XT owners may not appreciate having the performance of two Radeon X800 XLs, but those are the breaks.