Direct3D 功能级别

为了处理新计算机和现有计算机中视频卡的多样性,Microsoft Direct3D 11 引入了功能级别的概念。 本主题讨论 Direct3D 功能级别。

每个视频卡实现某个级别的 Microsoft DirectX (DX) 功能,具体取决于所安装的图形处理单元 (GPU)。 在以前版本的 Microsoft Direct3D 中,你可以找到视频卡实现的 Direct3D 版本,然后相应地对应用程序编程。

在 Direct3D 11 中,引入了称为功能级别的新范例。 功能级别是明确定义的 GPU 功能的集合。 例如,9_1 功能级别实现在 Microsoft Direct3D 9 中实现的功能,该功能 ps_2_xvs_2_x公开着色器模型的功能,而 11_0 功能级别实现在 Direct3D 11 中实现的功能。

现在,在创建设备时,你可以尝试为想要请求的功能级别创建设备。 如果设备创建成功,该功能级别将存在,如果失败,硬件将不支持该功能级别。 你可以尝试在更低的功能级别重新创建设备,也可以选择退出应用程序。 有关创建设备的详细信息,请参阅 D3D11CreateDevice 函数。

使用功能级别,可以针对 Direct3D 9、Microsoft Direct3D 10 或 Direct3D 11 开发应用程序,然后在 9、10 或 11 硬件 (上运行该应用程序,但有一些例外情况:例如,新的 11 个功能不会在现有的 9 卡) 上运行。 下面是功能级别的几个其他基本属性:

  • 允许创建设备的 GPU 达到或超过该功能级别的功能。
  • 功能级别始终包括上一个或更低功能级别的功能。
  • 功能级别并不意味着性能,而只是功能。 性能依赖于硬件实现。
  • 创建 Direct3D 11 设备时,请选择功能级别。

有关在某些功能级别上创建非硬件类型设备的限制的信息,请参阅 创建 WARP 和参考设备的限制

为了帮助你确定要设计的功能级别,请比较每个功能级别的功能。

10Level9 参考部分列出了各种 ID3D11DeviceID3D11DeviceContext 方法在各种 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_DESCAddressUAddressVAddressW 成员不能设置为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,仅支持 DrawDrawIndexedDrawIndexInstanced 的呈现方法。 同样,对于功能级别 9_3,仅支持通过 Draw 呈现点列表。

8 受Windows 11支持。

9 在 Direct3D 12 API 中,CBV/SRV/UAV 堆中的描述符数量存在限制。 有关详细信息 ,请参阅硬件层 。 另外,所有阶段的所有描述符表中 UAV 的数量都有限制,这基于 资源绑定层

10 64 位进程需要每个资源和每个进程 40 位可用的地址空间。 32 位进程可能限制为 31 位地址空间。 API 中提供两项功能 (上限) - 按进程和按资源。 每个进程地址空间始终大于或等于每个资源地址空间。

有关不同硬件功能级别的格式支持的详细信息,请参阅: