Demystifying DirectX 12 support: What AMD, Intel, and Nvidia do and don’t deliver - DirectX feature levels and point updates are not the same thing
by
, 06-16-2015 at 01:10 PM (1988 Views)
When Windows 10 debuts next month, it’s going to deliver the first full DirectX update since Windows 7 debuted six years ago. For more than a year, AMD and Nvidia have been advertising that various older GPU families would support DirectX 12 at launch.
Recently, however, there’s been some confusion over what level of support Intel, AMD, and Nvidia will offer for the new API and which products will run the upcoming games that rely on it. The current confusion seems to have been caused by comments from AMD’s Robert Hallock, who acknowledged that the various AMD GCN-class GPUs support different feature levels of DirectX 12. This has been spun into allegations that AMD doesn’t support “full” DirectX 12. In reality, Intel, Nvidia, and AMD all support DirectX 12 at various feature levels, and no GPU on the market today*supports every single optional DirectX 12 capability.
DirectX feature levels and point updates are not the same thing
The first thing to understand is that DirectX feature levels aren’t the same thing as DirectX point updates. A point update (DirectX 10.1, DirectX 11.1 / 11.2) is an additional set of standardized capabilities that allow developers to perform certain tasks more efficiently or offer specific capabilities. DirectX 10.1, for example, implemented new standards for visual quality, new shader instructions, and support for cube map arrays. It wasn’t a significant enough update to define an entirely new version of DirectX around it, but it was a large enough step to warrant its own extension.
A DirectX feature level, in contrast, defines the level of support a GPU gives while still supporting the underlying specification. This capability was first introduced in DirectX 11. Microsoft defines a feature level as “a well defined set of GPU functionality. For instance, the 9_1 feature level implements the functionality that was implemented in Microsoft Direct3D 9, which exposes the capabilities of shader models ps_2_x and vs_2_x, while the 11_0 feature level implements the functionality that was implemented in Direct3D 11.”
The chart below is a partial example of DirectX 11 feature levels, just to illustrate the point:
The purpose of the feature level function is to allow developers to target a single API rather than developing separate codebases in parallel to ensure that a game can run smoothly on multiple generations of GPU hardware rather than writing separate code for DX12, DX11, DX10, and so on. A DirectX 11 GPU with feature level 9_3 couldn’t magically perform DirectX 11 effects, but it could run games in DirectX 9 mode without the developer needing to write an entirely separate engine implementation to allow for it. That’s how games like Civilization V were able to run in either DX11 or DX9 modes from a common codebase.
AMD, Intel, and Nvidia: Who supports what?
One of the problems with identifying which GPUs support which features is the confusion between DirectX API support and feature level support. This support page from Nvidia, for example, details how Fermi and Kepler GPUs can support DirectX 11.1 at feature level 11_0. The reason Kepler and Fermi don’t support DirectX 11.1 at feature level 11_1 is because two of the capabilities required for 11_1 aren’t available on the GPU. Nvidia goes to some pains to point out that the 11.1 DirectX update actually adds support for some capabilities Fermi introduced in 2010.
The following Microsoft slide details exactly which DirectX 12 feature levels are supported by which hardware iterations:
It’s not clear why Microsoft lists Kepler as supporting DirectX 11_1 while Nvidia shows it as limited to DirectX 11_0 below, but either way, the point is made: *DirectX 12 support is nuanced and varies between various card families from every manufacturer. AMD’s GCN 1.0 chips include Cape Verde, Pitcairn, Oland, and Tahiti and support feature level 11_1, whereas Bonaire, Hawaii, Tonga, and Fiji will all support feature level 12_0. Nvidia’s various 4xx, 5xx, 6xx, and 7xx families will all support DirectX 12 at the 11_0 or 11_1 feature level, with the GTX 750 Ti offering FL 12_0 support.
More...