New in DirectX 12 feature Level 12_2, a “feature level” is a name that is used to describe a bunch of graphics card capabilities. “Feature level” is a property of your graphics card.
Successive feature levels are supersets of functionality. For example, feature level 12_1 includes all the capabilities of feature level 12_0 plus some more things. And, of course, feature level 12_2 includes all the capabilities of the ones before it, plus some new things. Now it’s worth mentioning that the jump from 12_1 to 12_2 is huge. There are some big-ticket graphics features worth exposing in Direct3D 12, and important enough to be represented in a feature level. There’s a desire to streamline applications who wish to use them, and to make it easier to reason about support for those features on everyone’s gaming environments. Those big-ticket items are
- DirectX raytracing
- Mesh shaders
- Variable rate shading
- Sampler feedback
In addition, feature level 12_2 includes a grab-bag of other capabilities, listed out below. As time moves on and newer-feature-level graphics cards become more widely available, application developers’ lives are made easier since a cumbersome capability check can be removed in favor of simple reliance on presence of the new feature level.
All the things which comprise feature level 12_2 also exist in terms of capabilities and feature tiers queryable through CheckFeatureSupport. No hidden capabilities or anything like that.
If a device is feature level 12_2, it has:
Feature | 12_2 minimum |
Required driver model | WDDM 2.0 |
Shader Model | 6.5 |
Raytracing tier | Tier 1.1 |
Variable shading rate | Tier 2 |
Mesh shader tier | Tier 1 |
Sampler feedback | Tier 0.9 |
Resource Binding Tier | Tier 3 |
Tiled Resources | Tier 3 |
Conservative Rasterization | Tier 3 |
Root Signature Tier | 1.1 |
DepthBoundsTestSupported | TRUE |
WriteBufferImmediateSupportFlags | Direct, Compute, Bundle |
MaxGPUVirtualAddressBitsPerResource | 40 |
MaxGPUVirtualAddressBitsPerProcess | 40 |
The capabilities in 12_2, in particular the big-ticket ones simply aren’t surfaced through Direct3D 11 API. You’re not going to get, say, DirectX Raytracing, through the Direct3D 11 programming model. So it hardly makes sense to request a feature level with capabilities inaccessible to your programming model. Feature level 12_1, on the other hand, went out with the initial release of Windows 10. It included things that were digestible and made sense to expose through both Direct3D 11 and Direct3D 12 programming models. Take tiled resources, for example. That’s a capability guaranteed through feature level 12_0. You have tiled resources in 11, and you have them in 12 (called “reserved resources”). Similar thing for conservative rasterization, something scoped enough to work with both programming models, which was included in 12_1. On the other hand the capabilities which comprise feature level 12_2 are huge and comprise a big API surface. A tight integration with the Direct3D 12 programming model allows them to work really well.
One detail: when you create a Direct3D 11 device, you pass an array of ordered feature levels. The first feature level that succeeds the platform-availability-check is the one you get. If that list includes feature level 12_2, it’ll ignore that and move onto the next one. It won’t fail the whole call.
Q: Which hardware platforms will support feature level 12_2?
A: here we go:
- Feature level 12_2 is supported on NVIDIA GeForce RTX and NVIDIA Quadro RTX GPUs.
- AMD’s upcoming RDNA 2 architecture-based GPUs will include full feature level 12_2 support.
- Intel’s roadmap includes discrete GPUs that will empower developers to take full advantage of Feature Level 12_2.
- Microsoft is collaborating with Qualcomm to bring the benefits of DirectX feature level 12_2 to Snapdragon platforms.
The powerful new capabilities in feature level 12_2 represent exciting new possibilities for game and application developers.
Microsoft Adds DirectX 12 Feature-level 12_2, and Turing, Ampere and RDNA2 Support it