【发布时间】:2017-10-05 22:45:16
【问题描述】:
我在 iOS 11 上的 EAGLContext presentRenderbuffer 中遇到了很多崩溃,但仅限于 iPhone 6/6+ 和 旧版。
根据this post,我认为我们已经通过重写所有内容以不使用 VBO/VAO 来排除与 VBO 相关的问题,但崩溃并没有因此得到修复。
还有其他一些关于 SO 的问题,但没有解决方案 - 有没有其他人看到这次崩溃的上升趋势并能够解决它?
TL;DR:
这是我们目前所知道的:
- 该崩溃是针对 iOS11、iPhone 5S/6/6+ 的。 6S 及以上不会出现这种情况。
- OpenGL 堆栈的核心返回 gpus_ReturnGuiltyForHardwareRestart
- 当我们尝试从 CAEAGLLayer 调用 [EAGLContext presentRenderbuffer] 时会发生这种情况
- 我们没有复制品。
到目前为止我们所做的尝试:
- 在我们的渲染堆栈中删除对 VBO/VAO 的任何引用。没有帮助。
- 我们已尝试使用大量绘图场景(旋转、调整大小、背景/前景)进行复制。不走运。
- 据我们所知,iPhone 6 家族和 iPhone 6S 家族之间的应用程序逻辑没有什么特别之处。
一些线索(可能相关但不一定):
- 我们知道,当 presentRenderBuffer 在主线程之外被调用,并且一些 CATransaction 在主线程上同时发生时,崩溃率会上升。
- 在主线程(连同整个绘图管道)上调用 presentRenderBuffer 时,崩溃率会略微下降,但不会急剧下降。
- 很大一部分 (~20%) 的崩溃发生在图层离开屏幕和/或离开视图层次结构时。
这是堆栈跟踪:
libGPUSupportMercury.dylib gpus_ReturnGuiltyForHardwareRestart
1 AGXGLDriver gldUpdateDispatch
2 libGPUSupportMercury.dylib gpusSubmitDataBuffers
3 AGXGLDriver gldUpdateDispatch
4 GLEngine gliPresentViewES_Exec
5 OpenGLES -[EAGLContext presentRenderbuffer:]
【问题讨论】:
-
看起来类似于openradar.me/34858598
-
@techsMex 这是我的雷达 :)
-
您是否找到了与崩溃相关的任何其他信息?我的情况与您雷达中描述的情况几乎完全相同。
标签: ios objective-c iphone graphics opengl-es