使用激光雷达相机捕获深度示例代码:导致 GPU 超时错误 (00000002:kIOGPUCommandBufferCallbackErrorTimeout)

问题描述 投票:0回答:1

我希望这里有人能够帮助我解决我遇到的问题。

下载项目代码并在iPhone 14 Pro上运行Swift示例代码后,应用程序间歇性崩溃,抛出此错误:

由于执行期间出现错误,命令缓冲区的执行被中止。导致GPU超时错误(00000002:kIOGPUCommandBufferCallbackErrorTimeout)

有时几秒内就会崩溃,有时可能需要10分钟左右,有时甚至更长。

这里有没有人在示例代码或使用 LiDAR 相机时经历过这种崩溃?

我花了很长时间试图解决这个问题,我在网上到处搜索并向苹果提交了(我认为)有关此问题的报告。我无法让 xcode 向我显示发生崩溃的代码行。

我说“我认为”是因为我唯一能找到联系苹果的地方就是通过反馈助手。

任何帮助将不胜感激。

更新

经过无数个小时(或几天),我终于找到了错误所在。

在MetalTextureViewColor.swift文件中,有一个draw方法。错误是在这一行抛出的

编码器.endEncoding*(

出现以下错误

MTLCommandBuffer 执行失败。与编码器关联的命令导致错误

这是整个绘图功能

override func draw(in view: MTKView) {
        guard parent.capturedData.colorY != nil && parent.capturedData.colorCbCr != nil else {
            print("There's no content to display.")
            return
        }
        guard let commandBuffer = metalCommandQueue.makeCommandBuffer() else { return }
        guard let passDescriptor = view.currentRenderPassDescriptor else { return }
        guard let encoder = commandBuffer.makeRenderCommandEncoder(descriptor: passDescriptor) else { return }
        // Vertex and Texture coordinates data (x,y,u,v) * 4 ordered for triangle strip.
        let vertexData: [Float] = [-1, -1, 1, 1,
                                    1, -1, 1, 0,
                                   -1,  1, 0, 1,
                                    1,  1, 0, 0]
        encoder.setVertexBytes(vertexData, length: vertexData.count * MemoryLayout<Float>.stride, index: 0)
        encoder.setFragmentTexture(parent.capturedData.colorY!, index: 0)
        encoder.setFragmentTexture(parent.capturedData.colorCbCr!, index: 1)
        encoder.setDepthStencilState(depthState)
        encoder.setRenderPipelineState(pipelineState)
        encoder.drawPrimitives(type: .triangleStrip, vertexStart: 0, vertexCount: 4)
        
        // error happening on the line below
        encoder.endEncoding()


        commandBuffer.present(view.currentDrawable!)
        commandBuffer.commit()
        //commandBuffer.waitUntilCompleted()
    }

有什么方法可以捕获此错误并忽略它,然后继续运行应用程序吗?

swift iphone crash lidar
1个回答
0
投票

跟进这个问题,你能解决这个问题吗?

© www.soinside.com 2019 - 2024. All rights reserved.