Я не уверен, какой код уместен для публикации здесь, но мне просто интересно, как вообще отладить это. Я отображаю ARSCNView с включенной конфигурацией ARFaceTrackingConfiguration, и в фоновом потоке я часто выполняю Vision VNDetectFaceLandmarksRequest
и ARSCNView.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 поддерживает только рендеринг с металлическим покрытием. Я также пытался не устанавливать условия освещения в соответствии с этим вопросом , но, похоже, это не решает проблему.
Если кто-то сталкивался с этими ошибками при рендеринге ARSCNViews и имеет какие-либо советы о том, как отладить эти лаги, это было бы очень полезно.
Обновление
Мне удалось устранить эти лаги и ошибки графического процессора с помощью чрезмерного удушения моих запросов ориентира Vision. Кажется, что это вызвано просто выполнением множества дорогостоящих графических операций на iOS 12. Похоже, что этот обходной путь не помог сбою рендерера SceneKit