How to fix lag in 64 bit Android devices
My game's FPS drops to 30 - 8 FPS on any 64 bit Android device(ARM64) but is at 59 - 60 FPS on an even lesser 32 bit Android device(ARMv7).
I've tried unchecking Development Build on Build settings and I've tried disabling debug calls on my game by using:
void Update ()
{
#if UNITY_EDITOR
if(!Debug.unityLogger.logEnabled)
Debug.unityLogger.logEnabled = true;
#else
if(Debug.unityLogger.logEnabled)
Debug.unityLogger.logEnabled = false;
#endif
}
But there wasn't any change. And I tried setting all Stack Trace Log type to None(Edit > Project Settings > Player). Also no change.
PS: I used that update call because there are other imported assets that call the Debug class and I wouldn't want to mess around with their classes.
I've searched on other forums and found no helpful suggestions.
Here are my profiler screenshots from both devices:
As you can see in the screenshots above, the device that runs the game at less than 30 FPS(every 64 bit device) has Gfx.WaitForPresentOnGfxThread take 71.6% of the frames and RenderPipelineManager.DoRenderLoop_Internal() takes up 51.1%. While the device that ran the game at 60FPS(every 32 bit device) has RenderPipelineManager.DoRenderLoop_Internal() take up the most frames with 35.7% of the frame. How should I fix the frame rate drop on the 64 bit device?
Answer by IAmChiagozie · Sep 26, 2020 at 10:35 AM
Here's the fix: Since the GPU was obviously handling too much work on the 64 bit devices, I decided to allow my project to use only the OpenGLES2 API instead of including OpenGLES3 and Vulkan also since the 32 bit device I tested with supported only OpenGLES2. I didn't change anything else and I've got 70 - 60FPS on the 64 bit devices.
Your answer
Follow this Question
Related Questions
Performance much worse on LWRP than on BuiltIn Pipeline 0 Answers
Draw Calls are still HIGH? 0 Answers
Strange spikes in fps due to rendering 0 Answers