Why metal take a higher cpu percentage than opengl es3?

Hi:

I am developing a game with unity. When I install it on my device, I notice that it has about 30% higher cpu percentage viewed in xcode using the metal api . Even though it's 2 fps higher using metal api than opengl es3. It confused me a lot. I have already disable the "GPU Frame Capture" and "Metal Api Validation".

What I know about metal is that it has much lower CPU overhead and much more predictable performance. Any clue will be appreciated a lot. Thanks.

Replies

It's very hard to effectively measure on iOS, because if you're hitting your target frame-rate comfortably then the OS will cut the CPU/GPU clock speed which can make it look like a higher CPU usage when it's actually lower.


Looking at the battery consumption can be useful (although that's not as precise). Or profiling parts of your code that are unchanged can be good (e.g. if your Render function used to use similar amounts of CPU as your Update function, but now Render only takes half under metal, then that's a good sign)