Feature levels in Direct3D
Feature levels in Direct3D define strict sets of features required by certain versions of the Direct3D API and runtime, as well as additional optional feature levels available within the same API version.
Overview
Feature levels encapsulate hardware-specific capabilities that exist on top of common mandatory requirements and features in a particular version of the API. The levels are grouped in strict supersets of each other, so each higher level includes all features required on every lower level.Some feature levels include previously optional hardware features which are promoted to a mandatory status with new revisions of the API to better expose newer hardware. More advanced features such as new shader models and rendering stages are only exposed on up-level hardware, however the hardware is not required to support all of these feature levels and the Direct3D runtime will make the necessary translations.
Feature levels allow developers to unify the rendering pipeline and use a single version of the API on both newer and older hardware, taking advantage of performance and usability improvements in the newer runtime.
Separate capabilities exist to indicate support for specific texture operations and resource formats; these are usually specified per each texture format using a combination of capability flags, but some of these optional features are promoted to mandatory on upper feature levels.
Direct3D 10
Direct3D 10 introduced a fixed set of mandatory requirements for the graphics hardware. Before Direct3D 10, new versions of the API introduced support for new hardware capabilities, however these capabilities were optional and had to be queried with "capability bits" or "caps".Direct3D 10.1 API was the first to use a concept of "feature levels" to support both Direct3D 10.0 and 10.1 hardware.
Direct3D 11
In Direct3D 11, the concept of feature levels has been further expanded to run on most downlevel hardware including Direct3D 9 cards with WDDM drivers.There are seven feature levels provided by structure; levels 9_1, 9_2 and 9_3 re-encapsulate various features of popular Direct3D 9 cards conforming to Shader Model 2.0, while levels 10_0, 10_1, 11_0 and 11_1 refer to respective versions of the Direct3D API. "10 Level 9" feature levels contain a subset of the Direct3D 10/11 API and require shaders to be written in HLSL conforming to Shader Model 4.0 compiler profiles, and not in the actual "shader assembly" language of Shader Model 1.1/2.0; SM 3.0 has been omitted deliberately in Direct3D 10 Level 9.
Since Direct3D 11.1 for Windows 8, some mandatory features introduced for level 11_1 are available as optional on levels 10_0, 10_1 and 11_0 - these features can be checked individually via
CheckFeatureSupport
function however feature level 11_1 and optional features are not available in Direct3D 11.1 for Windows 7 platform update because it does not support WDDM 1.2.Direct3D 11.2 for Windows 8.1 adds optional mappable buffers and optional tiled resources for levels 11_0 and 11_1; these features require WDDM 1.3 drivers.
Direct3D 11.3 for Windows 10 requires WDDM 2.0 drivers; it adds more optional features and levels 12_0 and 12_1 from Direct3D 12.
Direct3D 12
Direct3D 12 requires graphics hardware conforming to feature levels 11_0 and 11_1 which support virtual memory address translations.There are two new feature levels, 12_0 and 12_1, which include some features that are optional on levels 11_0 and 11_1. Due to the restructuring of the API, some previously optional features are realigned as baseline on levels 11_0 and 11_1.
Direct3D 12 from Windows 10 Anniversary update includes Shader Model 6.0, which requires WDDM 2.1 drivers, and new DXIL compiler based on LLVM and SPIR-V. Windows 10 Creators Update versions 1703 and 1709 include Shader Model 6.1 and WDDM 2.2/2.3.
Shader Model 6+ is only available to Feature Level 12 devices.
Level | Driver model | Required features | Optional features | GPUs supporting as a maximum feature level |
11_0 | WDDM 2.0 | All mandatory 11_0 features from Direct3D 11, Shader Model 5.1, Resource binding Tier 1. UAVs at every pipeline stage, UAV only rendering with force sample count, constant buffer offsetting and partial updates. | Resource binding, tiled resources, conservative rasterization, stencil reference value from Pixel Shader, rasterizer ordered views, typed UAV loads for additional formats, UMA/hUMA support, view instancing. Logical blend operations, double precision floating point operations, minimum floating point precision. Shader Model 6.0-6.6 Metacommands, variable shading rate, raytracing, mesh shaders. Raytracing | Nvidia GeForce GTX 400/500 series, GeForce GTX 600/700/Titan series, GTX 745/750 series |
11_1 | WDDM 2.0 | Logical blend operations, target-independent rasterization, increased UAV slot count. | Resource binding, tiled resources, conservative rasterization, stencil reference value from Pixel Shader, rasterizer ordered views, typed UAV loads for additional formats, UMA/hUMA support, view instancing. Logical blend operations, double precision floating point operations, minimum floating point precision. Shader Model 6.0-6.6 Metacommands, variable shading rate, raytracing, mesh shaders. Raytracing | Mali-G71/72; AMD HD 7700-7900/8500-8900, Rx 240/250/265/270/280, Rx 330/340/350/370, R5/R7 400 series ; Intel HD Graphics 4200-5200, 5300-6300 |
12_0 | WDDM 2.0 | Resource Binding Tier 2, Tiled Resources Tier 2, Typed UAV Loads | Resource binding, tiled resources, conservative rasterization, stencil reference value from Pixel Shader, rasterizer ordered views, typed UAV loads for additional formats, UMA/hUMA support, view instancing. Logical blend operations, double precision floating point operations, minimum floating point precision. Shader Model 6.0-6.6 Metacommands, variable shading rate, raytracing, mesh shaders. Raytracing | AMD HD 7790/8770, Rx 260/290, Rx 360/390, R7 455 series, Xbox One, R9 285/380, Fury/Nano series, RX 460-480, RX 500 series |
12_0 | WDDM 2.1 | Shader Model 6.0, DXIL | Resource binding, tiled resources, conservative rasterization, stencil reference value from Pixel Shader, rasterizer ordered views, typed UAV loads for additional formats, UMA/hUMA support, view instancing. Logical blend operations, double precision floating point operations, minimum floating point precision. Shader Model 6.0-6.6 Metacommands, variable shading rate, raytracing, mesh shaders. Raytracing | AMD HD 7790/8770, Rx 260/290, Rx 360/390, R7 455 series, Xbox One, R9 285/380, Fury/Nano series, RX 460-480, RX 500 series |
12_1 | WDDM 2.1 | Shader Model 6.0, DXIL | Resource binding, tiled resources, conservative rasterization, stencil reference value from Pixel Shader, rasterizer ordered views, typed UAV loads for additional formats, UMA/hUMA support, view instancing. Logical blend operations, double precision floating point operations, minimum floating point precision. Shader Model 6.0-6.6 Metacommands, variable shading rate, raytracing, mesh shaders. Raytracing | Nvidia GeForce 900/Titan series, GeForce 10 series, GeForce 20 series ; AMD RX Vega series, Radeon RX 5000 series ; Intel HD Graphics 510-580, 605-620 |
12_1 | WDDM 2.0 | Conservative Rasterization Tier 1, Rasterizer Ordered Views. | Resource binding, tiled resources, conservative rasterization, stencil reference value from Pixel Shader, rasterizer ordered views, typed UAV loads for additional formats, UMA/hUMA support, view instancing. Logical blend operations, double precision floating point operations, minimum floating point precision. Shader Model 6.0-6.6 Metacommands, variable shading rate, raytracing, mesh shaders. Raytracing | Nvidia GeForce 900/Titan series, GeForce 10 series, GeForce 20 series ; AMD RX Vega series, Radeon RX 5000 series ; Intel HD Graphics 510-580, 605-620 |
CORE_1_0 | MCDM | Compute-only device: Resource Binding Tier 1, Shader Model 6.0, DXIL, Compute Shaders only | Shader Model 6.0-6.6, metacommands. |
Direct3D 12 introduces a revamped resource binding model, allowing explicit control of memory. Abstract resource "view" objects which allowed random read/write access are now represented by resource descriptors, which are allocated using memory heaps and tables. This model is supported on majority of existing desktop GPU architectures and requires WDDM 2.0 drivers. Supported hardware is divided into three Resource Binding tiers, which define maximum numbers of descriptors that can be used for CBV, SRV and UAV ; CBVs and SRVs per pipeline stage; UAVs for all pipeline stages; samplers per stage; and the number of SRV descriptor tables. Tier 3 hardware such as AMD GCN and, Intel Skylake has no limitations, allowing fully bindless resources only limited by the size of the descriptor heap, while Tier 1 and Tier 2 hardware impose some limits on the number of descriptors that can be used simultaneously. Additionally, buffers and textures can mixed together in the same resource heap only on hardware supporting Resource Heap Tier 2, while Tier 1 hardware requires separate memory heaps for buffers, textures, and render-target and depth stencil surfaces. Resource binding tier 1 and resource heap tier 1 are required for all supporting hardware.
Some of the optional features such as tiled resources and conservative rasterization have "tiers" which define the set of supported capabilities.
Most features are optional for all feature levels, but some of these features are promoted to required on higher feature levels.