Daydream performance issues due to FXPreRender_Finalize

Hi, I am developing a Google Daydream VR application wich runs with less than 20 FPS, I have started making some optimizations, but when I recorded a session right from the Google Pixel and put it into the Unreal Frontend profiler, I found that so many processes are taking a huge amount of time regarding to “CPU Stall - Wait For Event” and then I found that the render thread is taking about 60ms to render, and the most weight subprocess is the “FXPreRender_Finalize” with about the half of the render time, so I believe that the “CPU Stall - Wait For Event” is just waiting for the render thread, Is it possible to optimize the prerender task? I tried to turn off postprocessing, autoexposure as well as the AA (but not the OnChipMSAA), but it remains with the same load, I really need a performance boost :confused:

I am using the official 4.14.1 engine version, running on a Google Pixel XL

Thanks in advance.

Hi pelemiq,

These calls are for GPU particle rendering. I’ve opened ticket UE-39974 to investigate this.

If you’re not using GPU particles, I recommend you remove the calls to Scene->FXSystem->PreRender and Scene->FXSystem->PostRenderOpaque from FMobileSceneRenderer::Render in MobileShadingRenderer.cpp. That should solve the problem for your game.

Cheers
Jack

Hello Jack, thanks for your quick reply,

I managed to download the github version, change the MobileShadingRenderer.cpp, compile the engine and build a copy of the project into the Pixel, but unfortunately with the same result. When I load the profiler, the FXPreRender_Finalize is gone, but its parent process is taking the same amount of time for itself instead, so I think that the problem should be with the RHIMETHOD_DiscardRenderTargets_Flush process.

Thanks in advance.

Hi,

Could you reduce scene complexity and see if it helps? Remove some objects for example. I guess your frame takes more than 16ms, so renderer has to stall and wait for next v-sync.

Hello ddvlost, thank for your reply

After lot of tests, we finally realized that the preforma issues were related with the complexity of the materials in our scene, so we are going to use very simplified materials, almost only difusse colors.

After the material simplification, we reached a stable 29 FPS, but we are still having the issues with the processes that we talked about.

Right now we can go with this performance, but for the future, when would be possible to use the Vulkan graphics API with the Pixel? right now if you enable Vulkan it results on a instant crash of the app :confused: