- Saves a lot of memory when tons of actors remapping are used for world partition. Multiple GB in PIE is not unheard of.
- Add LLM counter specifically for LinkerInstancingContext memory usage
- Make sure everything is thread-safe and ready for async loading thread usage
#jira UE-185799
#rb Francis.Hurteau
[CL 26543720 by danny couture in ue5-main branch]
[FYI] Maxime.Mercier
Original CL Desc
-----------------------------------------------------------------
Better support of reinstantiation of subobjects in CDOs
Also reuse same pattern on instances to fix more subobject nesting issues
[CL 26523238 by maxime mercier in ue5-main branch]
#rb Per.Larsson
### Problem
- The IoStore does not support bulkdata payloads being compressed at the package level, instead compression will be applied to the .ucas file when it is created, this means that we don't really use the SizeOnDisk value for cooked bulkdata as it should always be the same as the in memory size.
- Some code paths in the editor however might support compression in the workspace domain and so use the SizeOnDisk value, such as calling ::GetCopy.
- In this cause the size being passed to the IoDispatcher would be INDEX_NONE, which the system converts to "please load the entire .ubulk section of the package"
- The buffer returned to the user would eventually be trimmed to the correct in memory size so this bug would be hard to notice, the only downside is wasting time loading more data off disk than required.
### Fix
- AsyncLoading2 now sets the SizeOnDisk to be a valid value (the size of the payload in memory) if we are not using runtime only bulkdata (USE_RUNTIME_BULKDATA) so when GetSizeOnDisk is called, it returns the correct value and we only load the payload we want.
- An assert has been added to make sure that the payload is not compressed (in which case the size would be wrong and we could end up overrunning valid memory) even though the flag is removed when cooking and it should not be possible to get to that point.
[CL 26404304 by paul chipchase in ue5-main branch]
#rb Per.Larsson
#rnx
- Note that this should not change the outcome as ::TryLoadDataIntoMemory will return false if the length of the payload is zero s the previous behaviour was to allocate, fail to load, then delete. The new code path and the old code path both end up with the bulkdata containing no allocation.
[CL 26281649 by paul chipchase in ue5-main branch]
Previously small optionals worked, by accident rather than design, but large optionals didn't
#rb andew.scheidrecker,steve.robb
[CL 26281089 by johan torp in ue5-main branch]
Disabled by default. gc.AllowIncrementalReachability controls if it's enabled or not.
gc.IncrementalReachabilityTimeLimit controls time limit (defaults to 0.005 = 5ms)
gc.VerifyNoUnrachableObjects (defaults to 0) controls additional GC assumption verification that no unreachable objects are reachable after RA is complete
gc.ContinuousIncrementalGC (defaults to 0) is a new GC stress test that runs incremental GC continuously
TObjectPtr barrier (Obj->MarkAsReachable()) is also currently disabled (compiled out with a macro) until we have all the places (ARO/BPVM) properly running barriers
EngineTest tests can and will run Incremental Reachability Analysis tests even if all the above is disabled
#rb Johan.Torp, Zousar.Shaker
[CL 26252569 by robert manuszewski in ue5-main branch]
Disabled by default. gc.AllowIncrementalReachability controls if it's enabled or not.
gc.IncrementalReachabilityTimeLimit controls time limit (defaults to 0.005 = 5ms)
gc.VerifyUnrachableObjects (defaults to 0) controls additional GC assumption verification that no unreachable objects are reachable after RA is complete
gc.ContinuousIncrementalGC (defaults to 0) is a new GC stress test that runs incremental GC continuously
TObjectPtr barrier (Obj->MarkAsReachable()) is also currently disabled (compiled out with a macro) until we have all the places (ARO/BPVM) properly running barriers
EngineTest tests can and will run Incremental Reachability Analysis tests even if all the above is disabled
#rb Johan.Torp, Zousar.Shaker
[CL 26229728 by robert manuszewski in ue5-main branch]