微软希望向上游 LLVM/Clang 编译器添加 DirectX + HLSL 支持


微软方面提出了一项提案,希望为上游 LLVM/Clang 编译器贡献 HLSL、DirectX 和 Vulkan 图形支持。

原因在于,其现有的 HLSL 编译器 DirectX Shader Compiler (DXC) 基于旧的 LLVM/Clang 3.7 分支。而微软计划将其编译器更新到最新的 LLVM,以便为 HLSL 带来新的 C++ 语言功能和工具改进。微软于 2017 年宣布了开源 DirectX 着色器编译器。

“虽然我们可以在自己的分叉中做到这一点,但我们相信将我们的编译器和社区与 LLVM 社区集成将使我们能够扩展这两个社区,并为我们的用户提供更好的编译器。”

微软方面表示,他们有兴趣支持三个主要的 CodeGen targets。首要任务是支持 DXC 目前支持的 code generation targets:DirectX 中间语言 (DXIL) 和 SPIR-V;将来可能会添加对 DirectX 9 到 DirectX 11 使用的 DirectX Bytecode (DXBC) 的支持。

“LLVM 社区中已经有很多关于 SPIR-V 的讨论。SPIR-V 是用于 GPU 编程的虚拟 ISA。由于编写 HLSL 的开发人员广泛使用 SPIR-V code generation,这对我们来说也是一个至关重要的特性。我们可以通过多种方式支持 SPIR-V,我们期待与社区积极合作来解决这个问题。”

鉴于 LLVM/Clang 3.7 已经有 7 年的历史,微软不打算将现有的编译器合并到现代 LLVM 中,而是计划在 LLVM/main 中逐步重新实现编译器功能。这意味着将特定于 HLSL 的语言选项添加到 Clang 前端以及对 Clang 和 LLVM 的 DirectX target 支持。

“Clang DirectX target 实现类似于 CUDA 或 OpenCL targets,在 LLVM 中,我们将添加一个 DirectX target 以包含我们的 codegen passes 并 emit DXIL。通过将尽可能多的 DXIL 特定代码隔离到目标中,我们希望最大限度地降低社区维护我们遗留的 bitcode 编写支持的成本。

我们打算采用与当前编译器不同的方法在 Clang 中实现 HLSL 支持,所以虽然我们可以将当前的实现作为语言特性的参考和测试文件的源,但我们不会将其作为实现细节的模型。

假设这个提议是可以接受的,那么前几个补丁就可以立即开始发布以供审查。随着我们的前进,我们希望建立一个 HLSL 工作组,该工作组将定期召开会议,讨论和跟踪进度并协调贡献者之间的工作。Microsoft 承诺将 Clang 的功能与 DXC 看齐,但 HLSL 社区正在支持这项工作,我们希望在 HLSL 支持功能完成后将开发完全转移到 LLVM/main。”


相關推薦

2022-03-14

微软方面提出了一项提案,希望为上游 LLVM/Clang 编译器贡献 HLSL、DirectX 和 Vulkan 图形支持。 原因在于,其现有的 HLSL 编译器 DirectX Shader Compiler (DXC) 基于旧的 LLVM/Clang 3.7 分支。而微软计划将其编译器更新到最新的 LLVM,以便为 HL

2022-03-30

3月上旬我们报道了向上游 LLVM/Clang 编译器添加 DirectX + HLSL 支持 。而从本周开始,微软图形处理工作的早期代码开始登陆 LLVM 15.0。 微软的开源 DirectX 着色器编译器“DXC”基于旧的 LLVM/Clang 3.7 分支,现在正致力于开发一种现代 D

2022-08-01

的 SPIR-V 后端代码 索尼开始向上游贡献 PlayStation 5 编译器 target 完成初始 DirectX/HLSL target 代码 完成初始 LoongArch CPU 架构代码 LLVM/Clang 对 LoongArch 的支持是在今年早些时候继 GCC 12 支持 LoongArch 后开始的,龙芯 LoongArch 架

2022-04-04

nux 5.18 对 LLVM 环境变量的处理进行了改进,以处理版本化编译器二进制文件或 PATH 之外的编译器安装。 LLVM = 1 当前用于定义 LLVM/Clang 工具变量,以使用该非 GNU 工具链构建 Linux 内核。 但是目前,如果想在 PATH 之外使用 LLVM/Clan

2023-06-29

,竞争和创新是相辅相成的。红帽、SUSE、Canonical、AWS和微软都创建了与之相关的Linux发行版,并进行了品牌推广和生态系统开发工作。这些变体都使用并贡献Linux源代码,但没有一个声称与其他发行版“完全兼容”。 最终,我

2022-09-03

Phoronix 对运行在 Linux 上的 Apple M2 芯片 的 GCC 和 LLVM Clang 编译器进行了性能测试和对比。 此次测试采用的设备是 Apple M2 MacBook Air ,运行基于 Arch 的 Asahi Linux 系统(这是目前唯一能够运行最新 Apple  M2 芯片的发行版),测试

2022-04-28

20 年,文件系统驱动程序开发商 Paragon Software 表示,他们希望将其 NTFS 驱动程序合并到 Linux 内核上游。此驱动程序以前是该公司的专有商业产品,但考虑到当时 Linux 内核对 NTFS 文件系统的支持状态,他们希望将此驱动程序合并

2023-03-07

去年我们报道了 Linux 内核拟放弃支持英特尔 ICC 编译器,如今该讨论终于有了结果。在 Linux 6.3 内核合并窗口打开的最后一天,Linus Torvalds 合并了“删除 Intel ICC 编译器支持” 补丁,从内核中移除了 Intel  ICC  编译器的支

2023-03-16

误。 HLSL 工具扩展 HLSL(High Level Shading Language) 是一种 DirectX 特定的编程语言,用于在游戏开发和渲染应用程序中创建着色器。HLSL Tools extension by Tim Jones 现在可以作为 Visual Studio 的一部分,通过语法高亮、语句完成、转到定义

2023-07-04

M/Clang 17 将提供"-ffat-lto-objects"支持。   据介绍,为编译器启用 Fat LTO 对象支持可以让编译器 IR 与最终目标代码一起保存。因此,这些 "fat" 对象可以用于开发构建和优化构建的生产,但代价是增加了对象大小和更长的构建

2022-09-22

修复, clang 格式、测试问题和其他更改。 其他各种新编译器功能。  LLVM 15.0.1 有 32 处更改,可以通过 LLVM.org 找到 LLVM 15.0.1 更改的完整列表。LLVM 15.0.1 的源代码和二进制文件可以从GitHub下载。 根据 LLVM 的发布节奏, LL

2022-09-09

le 的 DriverKit 已经在上游 LLVM 中进行了更改(D121911 [Clang] 添加 DriverKit 支持 ),默认使用 GNU++17 而不是 GNU++14。 目前相关的补丁已经发布,没有突发状况,默认标准转为 GNU++ 17 应该是板上钉钉的事情。 切换默认版本之后,对

2022-10-16

时,大家似乎忘记了,作为对长期以来占主导地位的 GCC 编译器目标的补充支持,英特尔的 ICC 编译器也能够用于构建 Linux 内核(尽管没有被广泛使用)。鉴于此,内核开发人员现在正在考虑删除对 ICC 编译器的支持。 Linux 开

2024-03-27

++”)现在可用于编译“CUDA”语言源。 基于 TI Clang 的编译器现在支持编译器 id“TIClang”。 添加了“cmake_language(EXIT)”子命令来终止具有指定退出代码的“cmake -P”脚本。 添加了“export(SETUP)”子命令来配置导出集。其