Hello everyone,
I’m currently optimizing the performance of my Android build and have encountered a tricky situation. My game experiences significant frame drops while playing timelines on Huawei devices, sometimes dropping below 20 FPS, while other Android devices maintain around 45-60 FPS.
Using the Profiler, I’ve identified that the frame drops are consistently associated with long durations of ”Gfx.PresentFrame“, indicating a GPU bottleneck. When I connected my device to RenderDoc for debugging, I noticed that each drop coincides with the spawning of large-area vfx.
While I initially suspected that the extended draw times for these vfx or excessive overdraw were to blame, my frame captures showed that all draw call times nearly doubled or tripled during drops, while the effects themselves didn’t seem to take excessively long to render. This raises the problem: if all drawing times increase during stutters, frame-by-frame per drawcall analyzation becomes meaningless.
I also investigated overdraw due to numerous alpha-test plants on screen. I employed PreDepth to render all opaque and AlphaTest objects’ depth before opaque queue, using ZTest Equal and ZWrite Off during their actual rendering. Surprisingly, this didn’t yield significant performance gains, with frame rates drops still happenning. The PreDepth Pass, which doesn’t write color, consumed nearly the same draw time as the opaque queue. I’m starting to doubt the reliability of the draw times reported by RenderDoc. (The duration in μs are incorrect for sure though. According to unity profiler, the time that CPU waiting is about 10 to 60ms. I’m just using renderdoc time for comparing different draw calls)
Despite limiting the maximum particle count and emission rate of my effects, performance on Huawei devices remains severely impacted during timeline. The effects use an open-source Uber Shader from a trusted author, so I doubt there are major issues there.
I’m feeling quite stuck and would appreciate any insights or suggestions on how to proceed. Thank you!


