【发布时间】:2019-05-20 13:50:52
【问题描述】:
我正在尝试构建一个 Metal 计算应用程序。我写了我的第一个内核,现在我想看看它是计算着色器的输出。但是,XCode 中禁用了“GPU 帧捕获”选项。 我正在使用 XCode 9.2。我已经在我正在运行的方案中启用了 GPU 帧捕获。 关于为什么会发生这种情况的任何提示?
【问题讨论】:
-
由于您实际上并没有呈现帧,Xcode 不知道什么构成了“帧”。您将必须添加程序化的开始和结束范围标记。您可以为此使用
MTLCaptureManager和MTLCaptureScope。 -
FWIW:我在这方面从未真正取得过成功。我能让 GPU Frame Capture 用于计算内核的唯一方法是同时使用 Metal 进行一些图形处理(例如显示 AVCapture 的预览层)。
-
@KenThomases 我厌倦了这样做。没用。不知何故,
isCapturing每次都是假的。我使用的是startCaptureWithDevice和stopCapture。不过,我并没有制作MTLCaptureScope。我刚收到sharedCaptureManager并调用了 startCapture。 -
@MatthijsHollemans 显然我也在使用 Metal APIs 进行一些渲染的应用程序中编写代码。但是那里没有使用计算的输出,这可能就是我无法捕获帧的原因。
-
您可以尝试在创建
MTLCommandBuffer之前设置断点,然后编辑断点并选择添加操作-> 捕获GPU 帧。请注意,它往往只在第二次计算调度后才起作用......