Mobile HDR makes Slate 'Present time' high and unstable in VR

Hello everyone!
I’ve found out a weird issue with Mobile HDR in GearVR project. Turning it on makes ‘Slate Present time’ go unreasonably high and unstable in almost empty scene. I’ve read explanations about ‘Present time’ might go up if the scene is too heavy to render, so Slate is basically waiting for the next frame. However almost empty test scene suffers from same issue.
Here are the steps:

  • Unreal 4.14 downloaded by Launcher
  • Blank BP project, mobile, Scalable 3D, no starter content
  • Basic project setup to run it in GearVR
  • Test level containing simple static mesh floor, Static Sky light and Stationary Direct light. (1 drawcall and 30 tris in total)
  • Project running on Samsung Galaxy S6 (Android 6.0.1)

Below are Profiler stats of test run.

Thread graph:

122600-hdr_graph.jpg

Stat info:

As you can see RenderThread is sonstantly jumping between 16.6 and 33.3 ms. Now I’ve spotted enabling Mobile HDR adds around 2.5ms into Draw time as a ‘FinishRenderViewTarget’. Which still takes just 4.9ms Draw time. I believe ‘stat startfile’ adds something like 2ms while writing statfile for some reason, I’ve just noticed it when executing ‘stat startfile’ command with ‘stat unit’ active. But without any ‘stat’ commands unstable fps is very noticeable by juddering of objects while passing by them in game.

To put it into a contest I’ve made test run with Mobile HDR turned off. Same project, same scene, just turned HDR off and rebuilt the project.

Thread graph:

122612-ldr_graph.jpg

Stat info:

RenderThread is smooth as silk at constant 16.6 ms. Draw time is expected 1.7ms, and Slate ‘Present time’ is that high just waiting due to 60 fps limit. In fact, on my test scene I’ve managed to get silky smooth 16.6ms with 100 drawcalls and 60k tris in frame.

I’ve came across couple of posts on Oculus forum from Unity developers and they experiencing what looks like a similar fps-jiggling issue with build-in Vsync, however by their words it have something to do with Android 6.0.1, coz as they say same project on similar Galaxy S6 BUT with Android 5 runs perfect constant 60 fps.

So the question is this - what’s up with recent version of Mobile HDR and may this issue be dependent on Android version? Sadly, I don’t have Android 5 phone so I can’t test this case.

Thanks and really waiting for Staff to reply. Cheers!

I can confirm this can be observed on any mobile Android project (not just VR) with Mobile HDR enabled. A simple scene will be unreasonably slow on the device with profiler showing the time is sunk in Present Time. This can be seen even on UE4 mobile starter projects. At the same time, iOS builds work just fine with Mobile HDR, as long as your scene is not too complex.

I think this was not an issue several versions ago (around 4.10?), but then something was introduced that started to cause this problem.

I can confirm we are having this issue as well in 4.15.

I said before in the comment - it’s not only about VR, but any mobile UE4 project using Mobile HDR, even with a very primitive scene. And this was not an problem in older version of Unreal Engine. So this issue clearly requires some attention from UE4 devs.

I’ve seen some discussion of this issue on Oculus forum. Apparently HDR is a no-no for GearVR just because HDR textures are so much heavier then LDR that GPU’s bandwidth just couldn’t cope with them. So it takes much more then 16.6 ms for each frame to be rendered even in an empty scene.

Is there are any way to get simple bloom without HDR or at least cheap HDR? whats the point of mobile HDR if we can’t use it with modern phones?

Is there any solution?