You don't need to guess. Use these two definitive methods.
C/C++ outline:
D3D_FEATURE_LEVEL featureLevels[] = D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_1, D3D_FEATURE_LEVEL_10_0 ;
UINT creationFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
#ifdef _DEBUG
creationFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
ID3D11Device* device = nullptr;
ID3D11DeviceContext* context = nullptr;
D3D_FEATURE_LEVEL obtainedFL;
HRESULT hr = D3D11CreateDevice(
nullptr, // adapter (nullptr = default)
D3D_DRIVER_TYPE_HARDWARE,
nullptr, // software rasterizer
creationFlags,
featureLevels,
ARRAYSIZE(featureLevels),
D3D11_SDK_VERSION,
&device,
&obtainedFL,
&context
);
A common misconception is that installing Direct3D 11 guarantees access to all D3D11 features. In reality, Microsoft introduced the concept of Feature Levels to decouple the API version from the underlying hardware capabilities. Feature Level 11.0 is the specific set of GPU features required to fully utilize D3D11 without falling back to older hardware paths. A GPU that supports Feature Level 11.0 must implement all mandatory D3D11 features, including: d3d11compatible gpu feature level 110 shader model 50
Without Feature Level 11.0, a GPU might still run D3D11 applications but would operate in a compatibility mode (e.g., Feature Level 10_0 or 9_3), losing access to tessellation and advanced compute capabilities. You don't need to guess
Let us break down the monolithic string into three digestible parts: A common misconception is that installing Direct3D 11
When a game requests all three, it explicitly rejects older GPUs designed for DirectX 10 or early DirectX 11 cards that only support, for example, Feature Level 10_0 or Shader Model 4.0.