不支持directx 12

不支持directx 12

随着 Windows 10 与第 6 代英特尔® 酷睿™ 处理器产品家族(代号 Skylake)的同步发布,我们可以更深入地探讨一下针对英特尔® 平台的资源绑定技术。

在之前的文章“深入了解 Microsoft DirectX 12 中的资源绑定”中,我们已经介绍了 DirectX 12 中的新型资源绑定方法。面对多样的选择,核心挑战在于如何针对目标 GPU、资源类型及其更新频率选择最佳的绑定机制。

本文旨在帮助理解在特定的英特尔 GPU 上,如何为不同的应用选择合适的资源绑定机制。

开发工具概览

为了使用 DirectX 12 开发游戏,您需要准备以下工具:

1. Windows 10 操作系统

2. Visual Studio 2013 或更高版本

3. Visual Studio 附带的 DirectX 12 SDK

4. 支持 DirectX 12 的 GPU 和相应的驱动程序

关于描述符的介绍

在 DirectX 12 中,描述符是一个用于描述 GPU 对象的数据块,采用 GPU 特定的不透明格式。之前 DirectX 11 中的“资源视图”在 DirectX 12 中被重新定义为以下几类描述符:

1. 常量缓冲视图 (CBV)

2. 着色器资源视图 (SRV)

3. 无序访问视图 (U)

4. 取样器视图 (SV)

5. 渲染目标视图 (RTV)

6. 深度模板视图 (DSV)

以及其他类型。

这些描述符或资源视图可以被视为 GPU 前端使用的结构,也称为块。每个描述符的大小约为 32 到 64 字节,包含纹理尺寸、格式和布局等信息。这些描述符存储在所谓的描述符堆中,后者代表内存中的特定结构序列。而描述符表则保存了这些描述符堆的偏移量。它们将一个连续的描述符范围映着色器插槽,并通过根签名进行访问。根签名还包含根常量、根描述符和静态采样的信息。

图示及代码解析

图 1 展示了描述符、描述符堆、描述符表和根签名之间的关系。对应的代码示例如下:

此代码段初始化了一个根签名,其中包含两个描述符表、一个根描述符和多个根常量。根据它们的使用频率,进行了排序。这些描述符表对应于不同的资源绑定需求,如常量缓冲视图 (CBV)、着色器资源视图 (SRV) 和无序访问视图 (U)。每个描述符表都有一个间接级别,指向内存中的实际描述符。代码中还提到了如何将这些描述符设置到命令列表中,以供 GPU 着色器使用。讨论了不同类型的描述符是如何根据不同的硬件特性(如不同类型的 GPU)在内存中存储的。DirectX 12 通过预先分配大量的描述符来优化性能,避免了在运行时进行额外的分配。这对于游戏开发者来说是一个重要的优化手段。通过合理选择和使用这些资源绑定机制,开发者可以在特定的英特尔 GPU 上实现更高效的应用运行。


不支持directx 12