gpt4 book ai didi

ios - CompileIntermediate 需要 0.2 到 3 秒或更长时间才能返回(相同的着色器/案例)。为什么? (iOS 7 上的 IMGSGX543GLDriver)

转载 作者:行者123 更新时间:2023-12-04 15:17:29 25 4
gpt4 key购买 nike

我似乎遇到了一个已知的 iOS 问题,即调用 glDrawElements 导致着色器编译延迟。在这种情况下,我使用工具找到了导致大部分开销的子函数。

虽然我不太高兴在绘制时进行编译,但真正让我感到困惑的是我发现着色器编译时间在 0.2 秒到 5.0 秒或更长之间。在带有内存分配工具的仪器中运行,我实际上得到了 40.0 秒的延迟(!)

典型的堆栈是这样的:

18 OpenGLES 2939.0  glDrawElements
17 GLEngine 2939.0 glDrawElements_ACC_ES2Exec
16 GLEngine 2939.0 gleDoDrawDispatchCoreES2
15 IMGSGX543GLDriver 2939.0 gldUpdateDispatch
14 IMGSGX543GLDriver 2938.0 gpusLoadCurrentPipelinePrograms
13 IMGSGX543GLDriver 2915.0 glrUpdateCtxSysFragmentProgram
12 IMGSGX543GLDriver 2761.0 sgxUpdateCtxSysProgram
11 IMGSGX543GLDriver 2760.0 ppimgCompileShader
10 IMGSGX543GLDriver 2759.0 PVRUniFlexCompileToHw
9 IMGSGX543GLDriver 2658.0 CompileIntermediate

其中“2930.0”等...是在该函数中花费的时间(以毫秒为单位)。

“罪魁祸首”似乎是一个庞大的片段着色器(350 行)。好的,它很大,但编译时没有任何错误或警告。抱歉,我无法发布着色器代码或链接到它,但我认为其他人可能遇到了类似的错误(我相信着色器的大小放大了问题,如果有的话)。

有人遇到过这个吗?你能帮忙吗?

在运行 iPad2 和 iPod touch 的 iOS7 中观察到的问题。从一个版本到下一个版本,问题可能出现在其中一台设备上,或两台设备上,或两者都不出现。我无法清楚地确定一遍又一遍地运行该应用程序是否会改变任何东西,到目前为止,它似乎是在每次构建的基础上出现的。

更多信息:- 从来没有发生过第二次(或任何一段时间)应用程序加载着色器。- 着色器在应用程序启动后很快加载,但它不是此应用程序加载的第一个着色器。- 推迟加载此着色器一段时间(例如 0.5 到 1.0 秒)没有帮助

最佳答案

这实际上是一个已知问题,apple documentation说:

Creating a shader program is an expensive operation compared to other OpenGL ES state changes. Compile, link, and validate your programs when your app is initialized. Once you’ve created all your shaders, the app can efficiently switch between them by calling glUseProgram.

不幸的是,我认为您无法更快地编译着色器,但至少可以在初始化应用程序时更早地编译它。

关于ios - CompileIntermediate 需要 0.2 到 3 秒或更长时间才能返回(相同的着色器/案例)。为什么? (iOS 7 上的 IMGSGX543GLDriver),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22152756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com