Xcode 日志记录:“启用金属 API 验证”

pka*_*amb 16 macos xcode ios metal oslog

我正在通过 Xcode 构建一个 macOS 应用程序。每次构建时,我都会得到日志输出:

启用金属 API 验证

据我所知,我的应用程序没有使用任何 Metal 功能。我没有使用硬件加速的 3D 图形或着色器或视频游戏功能或类似的东西。

为什么Xcode打印Metal API日志输出?

我的应用程序中是否使用了 Metal?我可以还是应该禁用它?

如何禁用此“启用金属 API 验证”日志消息?

pka*_*amb 34

通过您的 Xcode 方案切换 Metal API 验证:

方案 > 编辑方案... > 运行 > 诊断 > 金属 API 验证。

这是一个复选框,因此可能的选项是EnabledDisabled

禁用组的关键enableGPUValidationMode = 1在你的.xcscheme文件中。

禁用后,Xcode 不再记录“Metal API Validation Enabled”日志消息。

注意:在 Xcode 11 及以下版本中,该选项出现在 Scheme Editor 的“Options”选项卡中(而不是“Diagnostics”选项卡)。

  • 这是为了什么..? (16认同)

McK*_*ley 12

如何禁用消息:

在窗口顶部选择您的方案。单击Edit Scheme下拉菜单,转到Diagnostics并取消Metal API Validation选中复选框。

我的应用程序中是否使用了 Metal?

是的,即使您的代码不直接与 GPU 交互,许多高级框架也会这样做——特别是Core ImageSpriteKitSceneKit。例如,我将应用程序中烦人的“Metal API Validation Enabled”消息缩小到这一行:

layer.backgroundColor = NSColor(patternImage: image).cgColor
Run Code Online (Sandbox Code Playgroud)

我应该禁用 Metal API 验证吗?

启用验证会检查每个 Metal API 调用,这会导致“对 CPU 性能产生微小但可测量的影响”。此验证的目的是

检查是否有错误调用 Metal API 的代码,包括资源创建、编码 Metal 命令和其他常见任务中的错误。

像 Core Image 这样的 Apple 框架错误地使用 Metal API 的可能性非常低,因此,如果您的应用程序仅使用那些高级 Apple 框架,那么我想说您应该放心地禁用 API 验证。摆脱那个该死的输出消息是值得冒险的。