DirectX 目标用户指南¶
警告
免责声明:DirectX 后端是实验性的,并且正在积极开发中。它尚未完成所有功能,也不适合在实验或演示环境之外使用。
简介¶
DirectX 目标实现了 DirectX 可编程接口。这些接口在 DirectX 规范中进行了文档化。
最初,该后端旨在支持 DirectX 12,并计划在稍后日期支持 DirectX 11。
DirectX 后端目前是实验性的,并且未随 LLVM 工具的任何发布版本一起提供。 要在本地启用构建 DirectX 后端,请将 DirectX
添加到 LLVM_EXPERIMENTAL_TARGETS_TO_BUILD
CMake 选项。 有关构建 LLVM 的更多信息,请参阅 使用 CMake 构建 LLVM 文档。
目标三元组¶
目前,DirectX 目标仅支持 dxil
架构,该架构为 DirectX 中间语言生成代码。
除了目标架构之外,DirectX 后端还需要知道目标运行时版本和管线阶段。这些使用 OS 和 Environment 三元组组件表示。
目前,DirectX 后端需要以 shadermodel
OS 为目标,并支持 6.0+ 版本(在撰写本文时,最新宣布的版本是 6.7)。
环境 |
描述 |
---|---|
|
像素着色器 |
|
顶点着色器 |
|
几何着色器 |
|
Hull 着色器 (细分) |
|
Domain 着色器 (细分) |
|
计算内核 |
|
可链接的 |
|
光线生成 (光线追踪) |
|
光线相交 (光线追踪) |
|
光线任意碰撞 (光线追踪) |
|
光线最近碰撞 (光线追踪) |
|
光线丢失 (光线追踪) |
|
可调用着色器 (光线追踪) |
|
网格着色器 |
|
放大着色器 |
输出二进制文件¶
DirectX 运行时 API 读取基于 DirectX 规范的文件格式。在不同的代码库中,此文件格式以不同的名称(特别是 DXBC
和 DXILContainer
)指代。由于此格式用于存储 DXBC
和 DXIL
输出,并且最终目标是在 LLVM 中支持两者作为代码生成目标,因此 LLVM 代码库使用更中性的名称 DXContainer
。
DXContainer
格式在功能规范中记录稀少,但在 DirectXShaderCompiler 中存在参考实现。该格式也在 LLVM 项目文档中进行了记录(请参阅 DirectX 容器)。
在 LLVM 中添加了对生成 DXContainer
文件的支持,用于对象流和写入器的 LLVM MC 层,以及用于测试和对象文件工具的 Object 和 ObjectYAML 库。
对于 dxil
目标,将位代码嵌入到 DXContainer
文件中遵循类似于 clang 为其他目标支持的 -fembed-bitcode
标志的模型。