D3d_feature_level Fix Info

| Feature Level | Typical Hardware Era | Key Capabilities Added | |---------------|----------------------|------------------------| | 9_1, 9_2, 9_3 | DirectX 9.0 – 9.0c | Fixed-function pipeline, shader model 2.0 (9_3: SM 3.0), limited texture formats | | 10_0 | DirectX 10 (e.g., GeForce 8) | Geometry shaders, stream output, shader model 4.0 | | 10_1 | DirectX 10.1 | Cubemap arrays, independent blend modes per RT | | 11_0 | DirectX 11 (e.g., GeForce 400+) | Compute shaders, tessellation, shader model 5.0 | | 11_1 | DirectX 11.1 | Target-independent rasterization, UAVs at all stages | | 12_0 | DirectX 12 baseline | Resource binding tier 2, conservative rasterization (Tier 1) | | 12_1 | D3D12 feature level 1 | Conservative rasterization (Tier 3), rasterizer ordered views | | 12_2 | D3D12 Ultimate (e.g., RTX 20+, RDNA2) | DirectX Raytracing (DXR) Tier 1.1, Mesh shaders, Sampler Feedback | 4.1 Device Creation (D3D11 Example) D3D_FEATURE_LEVEL requestedLevels[] = D3D_FEATURE_LEVEL_12_1, D3D_FEATURE_LEVEL_12_0, D3D_FEATURE_LEVEL_11_1, D3D_FEATURE_LEVEL_11_0 ; D3D_FEATURE_LEVEL supportedLevel; HRESULT hr = D3D11CreateDevice( nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr, 0, requestedLevels, ARRAYSIZE(requestedLevels), D3D11_SDK_VERSION, &device, &supportedLevel, &context); 4.2 Feature Toggle Logic After device creation, do not compare the feature level to a fixed number. Instead, check for specific capabilities:

Even within a feature level, some features are optional (e.g., ROVs in 12_1). Use CheckFeatureSupport : d3d_feature_level

if (supportedLevel >= D3D_FEATURE_LEVEL_11_0) // Enable compute shaders, tessellation else if (supportedLevel >= D3D_FEATURE_LEVEL_10_0) // Fallback to geometry shaders only | Feature Level | Typical Hardware Era |