Poor Slate3D Performance
Recently we found that using WidgetComponent in certain circumstances (specifically, under VR environment) could drastically lower the GPU performance. After two days' tracking, we narrowed the issue down to the RHICmdList.DrawIndexedPrimitive calls in SlateRHIRenderingPolicy.cpp. These calls simply push several draw calls to the GPU, but can deliver an unacceptable pressure to it. In our game, all the WidgetComponents are supposed to be rendered within ~0.1 milliseconds, which is actually possible if we don't run in VR mode; but in VR mode, they need more than 10 milliseconds to be rendered. I understand there can be performance drawbacks in VR mode, but a difference of ~100 times is really unbelievable.
Minimum Reproducible Scenario
We created a minimum scenario to reproduce the issue. Here are the steps:
Any thoughts would be appreciated!
After a deeper research we finally found out that it's not Slate3D who should take responsibility. The whole GPU profiling is inaccurate or nonsense, if the renderer has been capped to a certain frame rate while the actual rendering workload is low. Say, if your game is capped (by VSync or whatever) to 60 fps and the actual frame render time is lower than 1/60s (16.7ms), part of the spare time could be counted as cost or overhead to Slate3D, or sometimes HZB or other innocents.
I think this should be addressed as a bug of the GPU profiler.
answered Mar 02 '17 at 03:12 AM
We're facing this issue with 4.14 migration to 4.15. The Slate3D suddenly goes up very high.
However in our cast the Slate3D slowly rises over time as if it's memory leak. I'm not sure if it's due to cap , because in our case we started off with 60fps and then keeps dropping until 38 or so. with majority of it coming from Slate3D . Going up to 13ms at max. we hardly have any slate3D displayed.
answered Mar 21 '17 at 05:51 AM
Follow this question
Once you sign in you will be able to subscribe for any updates here