It’s been a while between drinks for DirectX with the latest release, 11, coming out some 6 years ago . This can be partly attributed to the consolization of PC games, putting a damper on the demand for new features, however Vista having exclusivity on DirectX 10 was the biggest factor ensuring that the vast majority of gamers simply didn’t have access to it. Now that the majority of the gaming crowd has caught up and DirectX 11 titles abound demand for a new graphics pipeline that can make the most of new hardware has started to ramp up and Microsoft looks ready to deliver on that with DirectX 12. Hot on the heels of that however is Vulkan, the new OpenGL standard that grew out of AMD’s Mantle API which is shaping up to be a solid competitor.
Underpinning both of these new technologies is a desire for the engines to get out of the way of game developers by getting them as close to the hardware as possible. Indeed if you look at the marketing blurb for either DirectX 12 or Vulkan it’s clear that they want to market their new technology as being lightweight, giving the developers access to more of the graphical power than they would have had previously. The synthetic benchmarks that are making the rounds seem to confirm this showing a lot less time spent sending jobs to the GPUs thus eeking out more performance for the same piece of hardware. However the one feature that’s really intrigued me, and pretty much everyone else, is the possibility of these new APIs allowing SLI or CrossFire like functionality to work across different GPUs, even different brands.
The technology to do this is called Split Frame Rendering (SFR) an alternative way of combining graphics cards. The traditional way of doing SLI/CrossFire is called Alternate Frame Rendering (AFR) which sends odd frames to one card and even frames to the other. This is what necessitates the cards being identical and the reason why you don’t get a 100% performance boost from using 2 cards. SFR on the other hand makes both of the GPUs work in tandem, breaking up a scene into 2 halves and sending one of to each of the graphics cards. Such technology is already available for games that make use of the Mantle API for gamers who have AMD cards with titles like Civilization: Beyond Earth supporting SFR.
For Vulkan and DirectX 12 this technology could be used to send partial frames to 2 distinct types of GPUs, negating the need for special drivers or bridges in order to divvy up frames between 2 GPUs. Of course this then puts the onus on the game developer (or the engine that’s built on top of these APIs) to build in support for this rather than it sitting with the GPU vendor to develop a solution. I don’t think it will be long before we see the leading game engines support SFR natively and so you’d likely see numerous titles being able to take advantage of this technology without major updates required. This is still speculative at this point however and we may end up with similar restrictions around SFR like we currently have for AFR.
There’s dozens more features that are set to come out with these new set of APIs and whilst we won’t see the results of them for some time to come the possibilities they open up are quite exciting. I can definitely recall the marked jump up in graphical fidelity between DirectX 10 and 11 titles so hopefully 12 does the same thing when it graces our PCs. I’m interested to see how Vulkan goes as since it’s grown out of the Mantle API, which showed some very significant performance gains for AMD cards that used it, there’s every chance it’ll be able to deliver on the promises its making. It really harks back to the old days, when wars between supporters of OpenGL and DirectX were as fervent as those between vi and emacs users.
We all know that vi and DirectX are the superior platform, of course.