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 和环境三元组组件表示的。
目前,DirectX 后端需要针对shadermodel
OS,并支持 6.0+ 版本(在撰写本文时,最新发布的版本是 6.7)。
环境 |
描述 |
---|---|
|
像素着色器 |
|
顶点着色器 |
|
几何着色器 |
|
外壳着色器(细分) |
|
域着色器(细分) |
|
计算内核 |
|
可链接的 |
|
射线生成(光线追踪) |
|
射线交点(光线追踪) |
|
射线任何碰撞(光线追踪) |
|
射线最近碰撞(光线追踪) |
|
射线未命中(光线追踪) |
|
可调用着色器(光线追踪) |
|
网格着色器 |
|
放大着色器 |
输出二进制文件¶
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
标志类似的模型。