实用指南:LLVM - DirectX 目标用户指南
DirectX 目标用户指南(User Guide for the DirectX Target)
警告
声明:DirectX 后端为实验性并处于积极开发中。尚未机制完备,不建议在生产环境中使用,仅适用于实验或演示场景。
简介
DirectX 目标建立了 DirectX 的可编程接口。这些接口在DirectX 规范 中有说明。
后端初期以支持 DirectX 12 为目标,计划在后续增加对 DirectX 11 的支持。
DirectX 后端目前为实验性,并未随 LLVM 工具的任何发行版一并发布。要在本地构建 DirectX 后端,请在 CMake 配置中将 DirectX 加到 LLVM_EXPERIMENTAL_TARGETS_TO_BUILD 选项中。有关构建 LLVM 的更多信息,请参阅文档:利用 CMake 构建 LLVM。
目标三元组(Target Triples)
目前,DirectX 目标仅支持 dxil 架构,用于生成 DirectX Intermediate Language (DXIL) 代码。
除了目标架构外,DirectX 后端还需要知道目标运行时版本和管线阶段,这些通过三元组中的 OS 与 Environment 成分来表达。
当前,DirectX 后端要求将 OS 设置为 shadermodel,并支持版本 6.0 及以上(截至撰写时,最新公布的版本为 6.7)。
表 129 DirectX 环境(DirectX Environments)
Environment(环境) — 说明
pixel— 像素着色器(Pixel shader)vertex— 顶点着色器(Vertex shader)geometry— 几何着色器(Geometry shader)hull— Hull 着色器(细分,Hull shader)domain— Domain 着色器(细分,Domain shader)compute— 计算内核(Compute kernel)library— 可链接的dxil库(Linkable dxil library)raygeneration— 光线生成(光线追踪,Ray generation)intersection— 光线相交(Ray intersection)anyhit— 任意碰撞(Ray any-hit)closesthit— 最近碰撞(Ray closest-hit)miss— 光线未命中(Ray miss)callable— 可被调用的着色器(Callable shader)mesh— Mesh 着色器amplification— Amplification 着色器
输出二进制(Output Binaries)
DirectX 运行时 API 读取基于DirectX 规范 的文件格式。在不同的代码库中,该格式被不同地称为(尤其有 DXBC 与 DXILContainer 的称法)。由于该格式既用于存储 DXBC 又用于存储 DXIL 输出,并且 LLVM 的最终目标是支持两者作为代码生成目标,LLVM 代码库使用一个更中性的名称:DXContainer。
DXContainer 格式在功能规范中记录较少,但在 DirectXShaderCompiler中存在参考实现。该格式也在 LLVM 项目文档中有所说明(参见DirectX Container)。
LLVM 中对在 DXContainer 文件中生成 bitcode 的支持,正逐步添加到 MC 层的对象流(object streamers/writers)以及用于测试和对象文件工具的 Object 与 ObjectYAML 库中。
针对 dxil 的目标,向 DXContainer 文件发出 bitcode 的方式类似于 clang 对其他目标支持的 -fembed-bitcode 标志的模型。
原文地址:https://llvm.org/docs/DirectXUsage.html
浙公网安备 33010602011771号