Direct3D 功能级别
为了处理新计算机和现有计算机中视频卡的多样性,Microsoft Direct3D 11 引入了功能级别的概念。 本主题讨论 Direct3D 功能级别。
每个视频卡实现某个级别的 Microsoft DirectX (DX) 功能,具体取决于所安装的图形处理单元 (GPU)。 在以前版本的 Microsoft Direct3D 中,你可以找到视频卡实现的 Direct3D 版本,然后相应地对应用程序编程。
在 Direct3D 11 中,引入了称为功能级别的新范例。 功能级别是明确定义的 GPU 功能的集合。 例如,9_1 功能级别实现在 Microsoft Direct3D 9 中实现的功能,该功能 ps_2_x 和 vs_2_x公开着色器模型的功能,而 11_0 功能级别实现在 Direct3D 11 中实现的功能。
现在,在创建设备时,你可以尝试为想要请求的功能级别创建设备。 如果设备创建成功,该功能级别将存在,如果失败,硬件将不支持该功能级别。 你可以尝试在更低的功能级别重新创建设备,也可以选择退出应用程序。 有关创建设备的详细信息,请参阅 D3D11CreateDevice 函数。
使用功能级别,可以针对 Direct3D 9、Microsoft Direct3D 10 或 Direct3D 11 开发应用程序,然后在 9、10 或 11 硬件 (上运行该应用程序,但有一些例外情况:例如,新的 11 个功能不会在现有的 9 卡) 上运行。 下面是功能级别的几个其他基本属性:
- 允许创建设备的 GPU 达到或超过该功能级别的功能。
- 功能级别始终包括上一个或更低功能级别的功能。
- 功能级别并不意味着性能,而只是功能。 性能依赖于硬件实现。
- 创建 Direct3D 11 设备时,请选择功能级别。
有关在某些功能级别上创建非硬件类型设备的限制的信息,请参阅 创建 WARP 和参考设备的限制。
为了帮助你确定要设计的功能级别,请比较每个功能级别的功能。
10Level9 参考部分列出了各种 ID3D11Device 和 ID3D11DeviceContext 方法在各种 10Level9 功能级别上的行为差异。
版本号的格式
Direct3D 版本、着色器模型和功能级别有三种格式。
- Direct3D 版本使用句点;例如,Direct3D 12.0。
- 着色器模型使用句点;例如,着色器模型 5.1。
- 功能级别使用下划线;例如,功能级别 12_0。
Direct3D 12 功能支持 (功能级别 12_2 到 11_0)
以下功能可用于列出的功能级别。 顶行的标题是 Direct3D 12 功能级别。 左侧列标题是功能。 另请参阅 表的脚注。
功能 \ 功能级别 | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
---|---|---|---|---|---|
着色器模型 | 6.5 | 5.12 | 5.12 | 5.12 | 5.12 |
WDDM 驱动程序模型 | 2.0 | 1.x | 1.x | 1.x | 1.x |
光线追踪 | 第 1.1 层 | 可选 | 可选 | 可选 | 可选 |
可变着色速率 | 第 2 层 | 可选 | 可选 | 可选 | 可选 |
网格着色器 | 第 1 层 | 可选 | 可选 | 可选 | 可选 |
取样器反馈 | 第 0.9 层 | 可选 | 可选 | 可选 | 可选 |
资源绑定 | 第 3 层 | 第 3 层 | 第 3 层 | 第 3 层 | 第 1 层 |
根签名 | 1.1 | 1 | 1 | 1 | 1 |
深度边界测试 | 是 | 可选 | 可选 | 可选 | 可选 |
立即写入缓冲区 | 直接、计算、捆绑 | 可选 | 可选 | 可选 | 可选 |
GPU 虚拟地址位 | 4010 | 4010 | 4010 | ||
平铺资源 | Tier3 | 第 2 层6 | 第 2 层6 | 可选 | 可选 |
传统型光栅化 | Tier3 | 第1 层 6 | 可选 | 可选 | 否 |
光栅器顺序视图 | 是 | 是 | 可选 | 可选 | 否 |
最小/最大筛选器 | 是 | 是 | 是 | 可选 | 否 |
映射默认缓冲区 | 空值 | 可选 | 可选 | 可选 | 可选 |
着色器指定的模具参考值 | 可选 | 可选 | 可选 | 可选 | 否 |
类型化无序访问视图加载 | 18 种格式,多个可选 | 18 种格式,多个可选 | 18 种格式,多个可选 | 3 种格式,多个可选 | 3 种格式,多个可选 |
几何着色器 | 是 | 是 | 是 | 是 | 是 |
流输出 | 是 | 是 | 是 | 是 | 是 |
DirectCompute/计算着色器 | 是 | 是 | 是 | 是 | 是 |
外壳着色器和域着色器 | 是 | 是 | 是 | 是 | 是 |
功能\ 功能级别 | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
纹理资源数组 | 是 | 是 | 是 | 是 | 是 |
立方体贴图资源数组 | 是 | 是 | 是 | 是 | 是 |
BC4/BC5 压缩 | 是 | 是 | 是 | 是 | 是 |
BC6H/BC7 压缩 | 是 | 是 | 是 | 是 | 是 |
Alpha 覆盖范围 | 是 | 是 | 是 | 是 | 是 |
扩展格式 (BGRA 等) | 是 | 是 | 是 | 是 | 是 |
10 位 XR 增强色格式 | 是 | 是 | 是 | 是 | 是 |
逻辑操作(输出合并器) | 是 | 是 | 是 | 是 | 可选1 |
独立于目标的光栅化 | 是 | 是 | 是 | 是 | 否 |
带有 ForcedSampleCount 1 的多呈现器目标 (MRT) | 是 | 是 | 是 | 是 | 可选1 |
UAV 槽 | 分层9 | 64 | 64 | 64 | 8 |
每个阶段的 UAV | 是 | 是 | 是 | 是 | 否 |
功能\ 功能级别 | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
仅 UAV 呈现的最大强制采样计数 | 16 | 16 | 16 | 16 | 8 |
常量缓冲区偏移和部分更新 | 是 | 是 | 是 | 是 | 可选1 |
每像素 16 位 (bpp) 格式 | 是 | 是 | 是 | 是 | 可选1 |
最大纹理维度 | 16384 | 16384 | 16384 | 16384 | 16384 |
最大立方体贴图维度 | 16384 | 16384 | 16384 | 16384 | 16384 |
最大卷范围 | 2048 | 2048 | 2048 | 2048 | 2048 |
最大纹理重复 | 16384 | 16384 | 16384 | 16384 | 16384 |
最大各向异性 | 16 | 16 | 16 | 16 | 16 |
最大基元计数 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 |
最大顶点索引 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 |
最大输入槽 | 32 | 32 | 32 | 32 | 32 |
同时呈现器目标 | 8 | 8 | 8 | 8 | 8 |
功能 \ 功能级别 | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
封闭查询 | 是 | 是 | 是 | 是 | 是 |
单独的 Alpha 混合 | 是 | 是 | 是 | 是 | 是 |
镜像一次 | 是 | 是 | 是 | 是 | 是 |
重叠顶点元素 | 是 | 是 | 是 | 是 | 是 |
独立写掩码 | 是 | 是 | 是 | 是 | 是 |
实例化 | 是 | 是 | 是 | 是 | 是 |
有条件的 2 个非电力3 | 否 | 否 | 否 | 否 | 否 |
nonpowers-of-2 无条件4 | 是 | 是 | 是 | 是 | 是 |
此外,还设置了以下标志:
功能 \ 功能级别 | 12_28 |
---|---|
WaveOps | true |
OutputMergerLogicOp | true |
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportWithoutGSEmulation | true |
CopyQueueTimestampQueriesSupported | true |
CastingFullyTypedFormatSupported | true |
Int64ShaderOps | true |
Direct3D 11 功能支持 (功能级别 12_1 到 9_1)
以下功能可用于列出的功能级别。 顶行中的标题是 Direct3D 11 功能级别。 左侧列标题是功能。 另请参阅 表的脚注。
功能 \ 功能级别 | 12_10 | 12_00 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
---|---|---|---|---|---|---|---|---|---|---|---|
着色器模型 | 5.12 | 5.12 | 5.02 | 5.02 | 4.x | 4.0 | 2.0 (4_0_level_9_3) [vs_2_a/ps_2_x]5 | 2.0 (4_0_level_9_1) | 2.0 (4_0_level_9_1) | ||
WDDM 驱动程序模型 | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | ||
平铺资源 | 第2 层 6 | 第2 层 6 | 可选 | 可选 | 否 | 否 | 否 | 否 | 否 | ||
传统型光栅化 | Tier16 | 可选 | 可选 | 否 | 否 | 否 | 否 | 否 | 否 | ||
光栅器顺序视图 | 是 | 可选 | 可选 | 否 | 否 | 否 | 否 | 否 | 否 | ||
最小/最大筛选器 | 是 | 是 | 可选 | 否 | 否 | 否 | 否 | 否 | 否 | ||
映射默认缓冲区 | 可选 | 可选 | 可选 | 可选 | 否 | 否 | 否 | 否 | 否 | ||
着色器指定的模具参考值 | 可选 | 可选 | 可选 | 否 | 否 | 否 | 否 | 否 | 否 | ||
类型化无序访问视图加载 | 18 种格式,多个可选 | 18 种格式,多个可选 | 3 种格式,多个可选 | 3 种格式,多个可选 | 否 | 否 | 否 | 否 | 否 | ||
几何着色器 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | ||
流输出 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | ||
DirectCompute/计算着色器 | 是 | 是 | 是 | 是 | 可选 | 可选 | 空值 | 不适用 | 不适用 | ||
外壳着色器和域着色器 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | ||
功能 \ 功能级别 | 12_10 | 12_00 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
纹理资源数组 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | ||
立方体贴图资源数组 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | 否 | ||
BC4/BC5 压缩 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | ||
BC6H/BC7 压缩 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | ||
Alpha 覆盖范围 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | ||
扩展格式 (BGRA 等) | 是 | 是 | 是 | 是 | 可选 | 可选 | 是 | 是 | 是 | ||
10 位 XR 增强色格式 | 是 | 是 | 是 | 是 | 可选 | 可选 | 空值 | 不适用 | 不适用 | ||
逻辑操作(输出合并器) | 是 | 是 | 是 | 可选1 | 可选1 | 可选1 | 否 | 否 | 否 | ||
独立于目标的光栅化 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 否 |
带有 ForcedSampleCount 1 的多呈现器目标 (MRT) | 是 | 可选1 | 可选1 | 可选1 | 否 | 否 | 否 | ||||
UAV 槽 | 64 | 64 | 64 | 8 | 1 | 1 | 不适用 | 不适用 | 不适用 | ||
每个阶段的 UAV | 是 | 是 | 是 | 否 | 否 | 否 | 不适用 | 不适用 | 不适用 | ||
功能 \ 功能级别 | 12_10 | 12_00 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
仅 UAV 呈现的最大强制采样计数 | 16 | 16 | 16 | 8 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | ||
常量缓冲区偏移和部分更新 | 是 | 是 | 是 | 可选1 | 可选1 | 可选1 | 是1 | 是1 | 是1 | ||
每像素 16 位 (bpp) 格式 | 是 | 是 | 是 | 可选1 | 可选1 | 可选1 | 可选1 | 可选1 | 可选1 | ||
最大纹理维度 | 16384 | 16384 | 16384 | 16384 | 8192 | 8192 | 4096 | 2048 | 2048 | ||
最大立方体贴图维度 | 16384 | 16384 | 16384 | 16384 | 8192 | 8192 | 4096 | 512 | 512 | ||
最大卷范围 | 2048 | 2048 | 2048 | 2048 | 2048 | 2048 | 256 | 256 | 256 | ||
最大纹理重复 | 16384 | 16384 | 16384 | 16384 | 8192 | 8192 | 8192 | 2048 | 128 | ||
最大各向异性 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 2 | ||
最大基元计数 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 1048575 | 1048575 | 65535 | ||
最大顶点索引 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 1048575 | 1048575 | 65534 | ||
最大输入槽 | 32 | 32 | 32 | 32 | 32 | 16 | 16 | 16 | 16 | ||
同时呈现器目标 | 8 | 8 | 8 | 8 | 8 | 8 | 4 | 1 | 1 | ||
功能 \ 功能级别 | 12_28 | 12_10 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
封闭查询 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | ||
单独的 Alpha 混合 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | ||
镜像一次 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | ||
重叠顶点元素 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | ||
独立写掩码 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | ||
实例化 | 是 | 是 | 是 | 是 | 是 | 是 | 是7 | 否 | 否 | ||
有条件的 2 个非电力3 | 否 | 否 | 否 | 否 | 否 | 否 | 是 | 是 | 是 | ||
nonpowers-of-2 无条件4 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 |
表的脚注
0 需要 Direct3D 11.3 或 Direct3D 12 运行时。
1 需要 Direct3D 11.1 运行时。
2 着色器模型 5.0 及更高版本可以选择性地支持双精度着色器、扩展的双精度着色器、 SAD4 着色器指令和部分精度着色器。 若要确定可用于 DirectX 11 的着色器模型 5.0 选项,请调用 ID3D11Device::CheckFeatureSupport。 某些兼容性取决于运行的硬件。 无论使用的功能级别如何,着色器模型 5.1 及更高版本仅通过 DirectX 12 API 受支持。 DirectX 11 最多仅支持着色器模型 5.0。 DirectX 12 API 仅降级到功能级别 11_0。
3 在功能级别 9_1、9_2 和 9_3 上,显示设备支持在两个条件下使用尺寸不是 2 的二维纹理。 首先,只能为每个纹理创建一个 MIP 贴图级别,其次,不允许纹理的包装采样器模式, (即,D3D11_SAMPLER_DESC的 AddressU、AddressV 和 AddressW 成员不能设置为D3D11_TEXTURE_ADDRESS_WRAP) 。
4 在功能级别 10_0、10_1 和 11_0 中,显示设备无条件支持使用尺寸不是 2 的二维纹理。
5 顶点着色器 2a,具有 256 条指令、32 个临时寄存器、深度 4 的静态流控制、深度 24 的动态流控制以及D3DVS20CAPS_PREDICATION。 具有 512 个指令的像素着色器 2x、32 个临时寄存器、深度 4 的静态流控制、深度 24 的动态流控制、D3DPS20CAPS_ARBITRARYSWIZZLE、D3DPS20CAPS_GRADIENTINSTRUCTIONS、D3DPS20CAPS_PREDICATION、D3DPS20CAPS_NODEPENDENTREADLIMIT和D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT。
6 较高层可选。
7 对于功能级别 9_3,仅支持 Draw、 DrawIndexed 和 DrawIndexInstanced 的呈现方法。 同样,对于功能级别 9_3,仅支持通过 Draw 呈现点列表。
8 受Windows 11支持。
9 在 Direct3D 12 API 中,CBV/SRV/UAV 堆中的描述符数量存在限制。 有关详细信息 ,请参阅硬件层 。 另外,所有阶段的所有描述符表中 UAV 的数量都有限制,这基于 资源绑定层。
10 64 位进程需要每个资源和每个进程 40 位可用的地址空间。 32 位进程可能限制为 31 位地址空间。 API 中提供两项功能 (上限) - 按进程和按资源。 每个进程地址空间始终大于或等于每个资源地址空间。
有关不同硬件功能级别的格式支持的详细信息,请参阅:
- 对 Direct3D 功能级别 12.1 硬件的 DXGI 格式支持
- 对 Direct3D 功能级别 12.0 硬件的 DXGI 格式支持
- 对 Direct3D 功能级别 11.1 硬件的 DXGI 格式支持
- Direct3D 功能级别 11.0 硬件的 DXGI 格式支持
- Direct3D 10Level9 格式的硬件支持
- Direct3D 10.1 格式的硬件支持
- Direct3D 10 格式的硬件支持