For anyone coming across this thread, here is the information I was able to find out in no particular order
With the Nexus 6P, we’ve noticed that you almost invariably get thermally throttled nearly immediately after starting the game, which destroys performance. The characteristic you will notice is that the game runs well for a while, then gets worse performance. Waiting for the kit to cool down ( or putting it in the freezer for a few minutes ) returns it to good performance for a short period of time.
We were going by some unreal documentation for mobile development that suggested < 500 draw calls per scene. Asking around, the suggestion for VR is closer to 50 draw calls per scene. We have not found any documentation to back up that number, but reducing content will generally benefit the GPU, since we are currently GPU bound.
Draw calls can be reduced by combining actors and simplifying materials. Combine as many materials as possible, and make sure to make heavy use of instanced static mesh components. On PC, there’s some potential in trying to automatically batch these things together, but on mobile, the cost is too high.
The other thing that you may consider doing is using cull volumes to ensure that non-visible rooms are completely culled out when outside of them. Unreal occlusion is slightly more liberal in what it chooses to draw, and cull volumes help make it a bit more conservative in those choices. Additionally, you can toggle visibility on actors (or entire sublevels) to get the same effect, if your content is built like that.
Another important thing to remember is that if something is alpha’d to zero, it may still be drawn! So, if you don’t want to render it, be sure to actually hide it to prevent it from being rendered.
And are you using Scanline Racing along with arm64? The delta in performance without those is pretty massive.
note: This requires NDK r11c, and at least API 21
note: you can only have one build type enabled at a time, or it will cause an error
Enable this setting - Edit > Project Settings > Platforms > Android > Build > Support arm64
Disable this setting - Edit > Project Settings > Platforms > Android > Build > Support armv7
Enable this setting - Edit > Project Settings > Platforms > Android > Advanced APKPackaging > Configure GoogleVR for low-latency rendering mode ( scanline racing )
For profiling on the device, the preferred method is to capture on the device, and then copy back to the PC. Use “stat startfile” and “stat stopfile” on the console (4-tap). This will write a .ue4stats file on the sdcard under /sdcard/UE4Game/[you project]. The exact path is written to the logcat. Copy this back to your PC and open it in the profiler tab in the session frontend.