启用GPU帧捕获

4

我正试图构建一个金属计算应用程序。我编写了我的第一个内核,现在我想从计算着色器中看到它的输出。但是,在XCode中,“GPU Frame Capture”选项被禁用了。 我正在使用XCode 9.2。我已经在运行的scheme中启用了GPU Frame Capture。 有关为什么会发生这种情况的任何提示吗?


由于您实际上并没有呈现帧,因此Xcode不知道什么构成了“帧”。您将需要添加编程的开始和结束范围标记。您可以使用MTLCaptureManagerMTLCaptureScope来实现。 - Ken Thomases
值得一提的是:我从来没有真正成功过。我唯一能够让GPU帧捕获在计算内核中工作的方法是同时使用Metal进行一些图形工作(例如显示AVCapture的预览层)。 - Matthijs Hollemans
@KenThomases 我试过了,但没成功。不知怎么回事,每次 isCapturing 都是 false。我使用的是 startCaptureWithDevicestopCapture。虽然我没有创建 MTLCaptureScope,但我只是获取了一个 sharedCaptureManager 并调用了 startCapture。 - user007
@MatthijsHollemans 看起来我也在使用 Metal API 编写一些渲染代码。但是计算的输出没有被用到,可能这就是我无法捕获帧的原因。 - user007
1
你可以尝试在创建MTLCommandBuffer之前设置断点,然后编辑断点并选择添加操作->捕获GPU帧。请注意,在第二个计算调度后才能正常工作... - Itai
@Itai 也尝试过那样做,但没有用。我迁移到了XCode 10.2。我可以使用GPU帧捕获。 - user007
1个回答

1
显然,在XCode 9.2上不能调试计算着色器。我转移到了Xcode 10.2,能够使用GPU帧捕获来调试我的计算内核。
附言:我不确定这是否是一项已记录的限制,但这是我所经历的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接