iOS Metal:无法使用函数创建计算管道状态

iOS Metal: Unable to create compute pipeline state with function

我正在尝试使用 iOS Metal Framework 在 GPU 上制作一个简单的数独应用程序。

我正在按照此博客的说明进行操作 post:

http://memkite.com/blog/2014/12/15/data-parallel-programming-with-metal-and-swift-for-iphoneipad-gpu/

我在这里修改我的代码:

https://github.com/mateuszbuda/Sudoku

(写这个问题时 HEAD 是提交 c3e06e0)

而且我在调用

时遇到了错误
newComputePipelineStateWithFunction

即在 ViewController(第 95 行)中设置 MTLDevice 时:

https://github.com/mateuszbuda/Sudoku/blob/c3e06e0e1edc724eea20962f32e49f0df8143b7d/Sudoku/ViewController.swift

我得到的错误是:

Error Domain=AGXMetal Code=1 "Compiler encountered an internal error"

我 运行 iPhone 6 Plus iOS 8.1.3

有人知道是什么导致了我收到的错误吗?

对于遇到同样问题的任何人,我已经解决了。

这只是说明内核函数有问题。它很可能无法编译,即使您在 Xcode.

中没有看到任何错误

您正在经历 Metal 中未完成的事情之一。错误显示 "internal" 的原因是因为这是编译器错误,由编译器引起。不是你。试试这个:

  1. 复制“.metal”文件中不可编译的所有代码。
  2. 删除 .metal 文件(不仅仅是引用)。
  3. 删除位于 users/yourUser/Library/Developer/Xcode/DerivedData
  4. 的 "DerivedData" 文件夹的所有内容
  5. 创建一个新的 .metal 文件并将旧代码粘贴到这个新的 metal 文件中。

现在构建 运行,你应该可以开始了。 发现此错误的任何人请确保向 Apple 发送某种错误报告,以便他们可以正确调试并在 Xcode.

的下一版本中修复它