我正在开发一个基于 Metal 的应用程序,在某些情况下,正确编译和链接的着色器代码会导致应用程序简单地崩溃而不会引发任何错误。
“崩溃”包括视觉输出的停止(在某些情况下,之前是几个交替帧的短暂停顿),但其他应用程序的其余部分正常运行。Xcode 性能监控实用程序报告 60fps 但 GPU 延迟为 0ms,并且 CPU 端执行继续,对 Metal API 的调用仍然成功完成。
不会向控制台报告任何错误。
这非常难以调试,因为我不知道错误来自着色器代码的何处。如果我知道这实际上应该在什么条件下发生,那将会有所帮助,这样我就可以有一个很好的清单来检查。否则,每当出现这种情况时,我都会在黑暗中拍摄。