2

是否可以将 OpenCL 风格的 SPIR-V 转换为 Vulkan 风格的 SPIR-V?
我知道可以使用 clspv 将 OpenCL C 编译为 Vulkan 风格的 SPIR-V,但我没有看到任何迹象表明它也支持摄取 OpenCL 风格的 SPIR-V。

如果您知道如何实现这一点,谢谢您的任何建议:)

4

1 回答 1

-1

我知道可以使用 clspv 将 OpenCL C 编译为 Vulkan 风格的 SPIR-V,但我没有看到任何迹象表明它也支持摄取 OpenCL 风格的 SPIR-V。

clspv 编译为“Opencl 风格的 SPIR-V”。IOW,它使用 OpenCL 执行模型和 OpenCL 内存模型。您的问题的答案是否定的(一般而言)。问题在于,例如 GLSL 使用逻辑内存模型,这意味着指针是抽象的,因此您不能拥有指向指针的指针。而 OpenCL 允许这样做,因为它使用物理内存模型。另外,OpenCL 中还有其他一些东西不能用 GLSL 来表达。您可以尝试编写一些翻译器,它可能适用于一些非常简单的代码,但仅此而已。

于 2019-11-12T14:24:13.360 回答