There has been some FUD going around, in response to the fact that AMD’s latest hardware does not support D3D_FEATURE_LEVEL_12_1. Namely, the claim was that D3D_FEATURE_LEVEL_12_0 required some features that only AMD supports, namely resource binding tier 3.
Now that the final version of Windows 10 is released, and with that, the final version of the Windows 10 SDK and proper drivers, I set up my development machine for the ‘real stuff’, instead of the early access stuff I had been playing with up to now. When I ran DXDIAG, something caught my attention right away:
It reports both featurelevels 12.1 and 12.0. This is what I originally expected anyway, since DirectX versions/feature levels are always incremental/fully backward-compatible, to avoid complications when developing software.
So, I decided to look it up in the final DirectX 12 documentation. And indeed, they explicitly mention it:
A feature level always includes the functionality of previous or lower feature levels.
Now, if you look at the table below on that page, you see that indeed, 12.0 does not require resource binding tier 3, as was claimed by the AMD camp earlier. It requires tier 2+. Although AMD hardware supports tier 3, this is NOT a requirement for 12.0, and therefore nVidia’s 12.1 hardware also supports 12.0.
Just to be sure, I also did a quick test with actual code, to create a 12_0 device on my GTX970:
And as expected, this code succeeds without a problem, and the application ran just fine.
Well, that is settled then.
“Skylake is FL12_1, supports ROV as well as ConservativeRasterization, TiledResources, ResourceBinding with Tier 3 respectively.”
Intel, embarassing AMD with Feature Level 12_1 support.
That is another common aspect of DX-features: they are generally only added when two or more vendors have committed to supporting the feature. This to avoid vendor-specific/patented/locked-down features.
Also interesting, if these reported caps are correct for Skylake, it is the most feature-rich GPU on the market.