ARSCNView在GPU 12上滞后于GPU错误“命令缓冲区的执行被中止...(IOAF代码5)”

时间:2018-10-26 19:50:19

标签: swift scenekit arkit ios12 arscnview

我不确定要在此处发布什么代码,但是我真的只是想知道如何调试此代码。我显示启用了ARFaceTrackingConfiguration的ARSCNView,并在后台线程上针对面部几何图形频繁执行视觉VNDetectFaceLandmarksRequestARSCNView.hitTest。我在iOS 12之前没有滞后问题,即使现在它只是间歇性的,但是当它发生时,它一次冻结了整个屏幕几秒钟并显示错误:

Execution of the command buffer was aborted due to an error during execution. Discarded (victim of GPU error/recovery) (IOAF code 5)

不确定是否相关,但我偶尔也会在SceneKit渲染线程(com.apple.scenekit.scnview-renderer“上崩溃,没有可用于调试的回溯。我没有使用任何定制的金属着色器,并且甚至在出现这些滞后/裂纹时都不会渲染任何SceneKit几何。

我不能使用OpenGL渲染,因为我相信ARSCNView仅支持金属支持的渲染。根据{{​​3}},我也尝试过不设置照明环境,但这似乎并不能解决问题。

如果任何人在渲染ARSCNViews时遇到了这些错误,并且对如何调试这些延迟有任何建议,将不胜感激。

更新

通过对Vision标志性请求的极大限制,我能够消除这些滞后和GPU错误。看来,这仅仅是由于在iOS 12上执行了大量昂贵的图形操作所导致的。此替代方法似乎并没有帮助SceneKit渲染器崩溃

1 个答案:

答案 0 :(得分:0)

从我的应用程序中删除此代码后,该问题消除了(sceneView是IB的ARSCNView):

let scene = try SCNScene(url: ConfigAR.loader!, options: nil)
preloaderSCNView.scene = scene
sceneView.addSubview( preloaderSCNView ) // the root of the problem