Vcc,一个基于 Clang 的编译器,旨在在 Vulkan 中生成可执行代码

VCC

Vcc:Vulkan Clang 编译器

在图形 API 领域, 着色语言面临着限制,因为尽管可以在 GLSL、HLSL 和 C++ 之间的公共子集中编写代码,但当前的限制仍然存在。

这就是Vcc诞生的原因 (Vulkan Clang Compiler)Vulkan Clang编译器,这是一个开发了3年的项目, 是为了应对这些限制和挑战而出现的。该项目不仅寻求克服表达限制,而且消除着色语言的概念。

通过合并 完整的语系 C / C ++ 到伏尔甘, Vcc 引入了 Vulkan 着色器中从未见过的功能, 例如物理指针、通用指针、实际函数调用和完整的控制流。

这个倡议 旨在弥合图形和计算 API 之间的软件差距。 通过使 Vulkan 与其他 GPU 计算 API 兼容,Vcc 被视为统一图形和计算编程的重要一步,与 Vulkan 闻名的大规模采用和实现质量保持一致。

关于VCC

Vcc 是一个基于 Clang 的编译器,旨在生成 Vulkan 中的可执行代码,其目标是 将自己定位为能够翻译 C++ 代码的编译器 以可以在 GPU 上运行的表示形式 支持 Vulkan 图形 API。 与基于 GLSL 和 HLSL 着色器语言的 GPU 编程模型不同,Vcc 采取了完全消除使用单独着色器语言的思想,并提供了直接为 Vulkan 编译 C/C++ 代码的能力。

虽然 可以被视为 GLSL 和 HLSL 的竞争对手, 这个项目背后的真正意图更进一步,因为 Vcc 寻求将 C/C++ 语言家族合并到 Vulkan 中, 介绍 Vulkan 着色器中的许多功能。

Vcc 只是 Shady 的一个接口、一个 IR 和一个编译器,旨在扩展 SPIR-V 以支持上述结构。 Shady 是一个相对传统的 IR,并且包含对解析 LLVM IR 的支持。处理当前版本 SPIR-V 3 中未找到的所有附加功能的减少和仿真。

当然,还有许多仅在着色器中才能找到的独特功能。这些使用内在函数和注释在 Vcc 中公开,允许您编写与 Vulkan 通道的各种功能交互的代码。

Vcc中的编译过程涉及到LLVM和Clang项目组件的使用 作为接口。对于在 GPU 上执行,Vcc 开发自己的中间着色器表示“Shady”, 以及专用编译器将代码转换为这种表示形式。这种方法允许编译标准 C/C++ 代码,并辅以特定的内置函数以利用 GPU 的功能。

VCC 因支持本机 C/C++ 函数来控制程序流程而脱颖而出, 甚至允许使用“goto”指令。此外,它还提供了调用函数、递归执行函数以及使用各种类型指针的能力,例如物理指针、标记指针和函数指针。此外,它还可以更轻松地对指针执行算术运算并确定内存中的类型布局。

Shady 着色器中间表示基于 SPIR-V 3,并经过扩展以支持 C/C++ 功能固有的特殊构造。仿真用于实现不直接适用于 SPIR-V 的高级功能。 Vcc 包含内置函数和注释,允许程序有效地使用着色器的特定功能,从而为开发 GPU 应用程序提供通用且强大的环境。

最后,值得一提的是,并非一切都是美好的必须考虑实施的一些限制。 例如,Vcc不支持C++异常,并且malloc/free功能不可用。此外,主机系统和 GPU 之间的函数和指针的可移植性也受​​到限制。在规划使用 Vcc 的应用程序开发以确保高效且无故障的部署时,这些考虑因素至关重要。

如果你是 有兴趣了解更多关于它的信息, 你可以咨询 现场 对于那些对代码感兴趣的人,您应该知道它是可用的 在这里。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。