[TIPS] How to Enable SLI and CrossFire Support for OpenGL Applications
SLI / CrossFire Article Index
3 – How to enable CrossFire support
CrossFire (or CF or XFire) is ATI/AMD multi-GPU technology. Thanks to CrossFire you can use several Radeon graphics cards at the same time to speed up the 3D rendering. There are several ways to enable CrossFire with an OpenGL application like FurMark:
3.1 – first thing, like for NVIDIA, be sure that CrossFire is enabled. Just open the CrossFireX panel of the Catalyst Control Center (CCC) and check the Enable CrossFireX checkbox:
3.2 – The application has a CrossFire profile provided by AMD: just like for NVIDIA, you have nothing to do. Just start your application in fullscreen, that’s all.
3.3 – The application does not have a CrossFire profile like FurMark. In that case try the following tricks:
3.3.1 – the dirty way: the file renaming trick (part 1): renaming FurMark.exe in etqw.exe is a simple solution to make CrossFire working. Like for NVIDIA, etqw.exe has a CrossFire profile in AMD Catalyst. But in some cases, this does not work and leads to a crash.
3.3.2 – The file renaming trick (part 2): etqw does not work? Then try to rename FurMark.exe in SeriousSam.exe. Serious Sam is also an OpenGL video game and has a CrossFire profile. The SeriousSam.exe trick works fine with ShaderToyMark (OpenGL benchmark based on GeeXLab demotool): thanks to it, my CrossFire of Radeon HD 5770 works like a charm with this hefty pixel shader application.
3.3.3 – Using CrossFire Xtension utility: this tool allows to create customized CrossFire profile your your OpenGL application. Once the profiles are created, you select the application in CrossFire Xtension Profiles list and start the application with Launch button. Works fine:
3.3.3 – AMD does not offer a CrossFire visual indicator like NVIDIA, then to be sure your CF system works fine, you can use a GPU tool that display the GPU load like MSI Afterburner:
The GPU load for two HD 5770 running ShaderToyMark
3.4 – do you have another trick? Post a comment to share it.
I said that renaming FurMark or another OpenGL application in etqw.exe (or SeriousSam.exe) is dirty. Why? Because a SLI / Xfire profile can use some hidden tricks in the OpenGL code to speed up things like removing some checks. Then, even if OpenGL specifications say that some OpenGL functions can accept NULL pointers as parameters, these functions will crash if NULL pointers are used… This is the case for etqw: some OpenGL functions in id Software engine never take a NULL parameter making it possible for NVIDIA and AMD to remove useless checks… You can rename an OpenGL application with the name of another application that has a multi-GPU profile but don’t be surprised if you have some crashes.
ShaderToyMark is a good example of the problem caused by CrossFire profile that is not intended for ShaderToyMark. Here is the rendering of ShaderToyMark when renamed in etqw.exe:
Whereas when renamed in SeriousSam.exe, ShaderToyMark rendering is perfect:
SLI / CrossFire Article Index