gpt4 book ai didi

swift - 来自多个 .metal 文件的一个默认 MTLLibrary(计算内核和 CIKernel 实现)?

转载 作者:行者123 更新时间:2023-11-30 10:32:56 33 4
gpt4 key购买 nike

在将自定义核心图像过滤器内核迁移到 Metal Shading Language 时,我在构建默认 Metal 库 (default.metallib) 时遇到了错误:

metallib: error: exactly one input file required

我的印象是这些可能位于单独的 .metal 文件中。尝试将它们合并到一个文件中会导致此错误:

Metal library creation failed: Error Domain=MTLLibraryErrorDomain Code=3 "Filters module must contain no vertex/fragment/kernel functions but contains 1 kernel function"

metalcoreimage 的命名空间可防止计算内核在默认库中显示为可用函数。

找到了这个SO答案,建议构建单独的库:

Metal: vertexFunction defined in .metal file becomes nil once setting Compiler and Linker Options for MSL cikernel

最佳答案

您可以创建多个 Foo.metalBar.metal 文件。只是不要将它们添加为链接器目标。

而是将 #include "Foo.metal"#include "Bar.metal" 放在 Main.metal 文件中。并且仅添加 Main.metal 文件作为链接器目标。

这样一来,就只有一个 .metal 文件,其中包括所有其他 .metal 文件。简单。

<小时/>

因此,Main.metal 文件的内容可能非常简单:

#include "Foo.metal"
#include "Bar.metal"

关于swift - 来自多个 .metal 文件的一个默认 MTLLibrary(计算内核和 CIKernel 实现)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58738946/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com