FLevelRenderAssetManager::IncrementalBuild hitches even when not making level visible immediately

FLevelRenderAssetManager::IncrementalBuild is causing hitches for us in the range of 10-20ms when we stream a level and make it visible. Following advice from other threads, I’m keeping the level in a loaded state until the code in EStaticBuildStep::ProcessComponents has had chance to run. This prevents a hitch in the EStaticBuildStep::ProcessComponents case, but it ends up just pushing the work further down the process. Since no components are actually registered, everything gets added to the PendingComponents list. Then once the level does finally become visible, all of the components are processed all at once in EStaticBuildStep::WaitForRegistration.

If I add some time slicing to the EStaticBuildStep::WaitForRegistration case where it only allows registration for a specific amount of time, then tries to do the remaining work in subsequent frames, is that going to be a problem? Is having pending work with a visible level going to break anything?

[Attachment Removed]

Hello,

Apologies for the delay, this issue was likely assigned to the wrong place. Are the hitches mentioned here still an problem? Time slicing like you mentioned is likely OK, though it’s hard to say what issues you may encounter. You may see objects popping in with lower resolution textures as mips are streamed in, depending on how long that last step of loading takes with time slicing. Have you implemented this strategy?

[Attachment Removed]