This question was created in reference to: [Very slow PIE starts with UE [Content removed]
As requested by Stu here is the CallStack. Sorry for the long delay to provide it:
UNiagaraSystem::UpdateSystemAfterLoad()
UNiagaraSystem::CacheFromCompiledData()
FVersionedNiagaraEmitterData::CacheFromCompiledData()
UNiagaraSpriteRendererProperties::CacheFromCompiledData()
UNiagaraSpriteRendererProperties::UpdateMICs()
UNiagaraRendererProperties::UpdateMaterialParametersMIC()
BuildMaterialStaticParameterSet() returns true as we change static paramters in the emitter.
We are freshly loaded, InOutMIC is nullptr and we make a new UMaterialInstanceConstant
UMaterialInstance::UpdateStaticPermutation()
Because we just made a new InOutMIC its bHasStaticPermutationResource
is still false so we need to set it and do update work.
Because we didn't pass in a MaterialUpdateContext
we make a fresh local one that goes out of scope immediately.
As it is made with FMaterialUpdateContext::EOptions::RecreateRenderStates,
it has a FGlobalComponentRecreateRenderStateContext that goes out of scope
right away, too, and calls UpdateAllPrimitiveSceneInfos().
Without the workarounds in the referenced ticket this makes PIE almost unusable. As our map grows and evolves the workarounds start to no longer be sufficient.