[Solved] PostLateUpdate.UpdateAllSkinnedMeshes takes up a lot of time in android build

While testing the performance of our build on android I noticed a lot of time is spent in PostLateUpdate.UpdateAllSkinnedMeshes. The call takes ~20ms, most of which is spent waiting with Semaphore.WaitForSignal, and I can’t figure out what exactly the main thread is waiting for.

My best guess is that it’s waiting for the render thread / GPU to finish, but it’s hard to tell from the timeline what the render thread is doing at that point. This only happens on a lower end device which doesn’t have a dedicated graphics chip, we tested on another device that does have a dedicated graphics chip and there the timeline looks normal with no unexpected wait times.

Here’s the timeline as recorded on the lower end device:

And compared to the higher end device:

As you can see, half of the frame time on the main thread is spent waiting. The same is true on the higher end device of course, but in that case it’s waiting for vsync which is to be expected.

Is this just the result of a GPU bottleneck, or is something else going on here?

Seems like the delay was caused by the GPU profiler as it disappears once the GPU profiler is removed. Considering this issue solved.