- 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]
1) Fix for test package names not starting with proper prefix
2) Fix incompatible value that is passed into CheckValidObject to NOT be the outer of the fallback objecte. The incompatible value now gets renamed by CheckValidObject, and renaming the outer of the fallback object would break the test.
#rnx
#rb Joe.Pribele
[CL 26474125 by Matt Peters 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]
Note: This doesn't impact any OS specific dialogs
Breaking: FCoreDelegates::ModalErrorMessage is now called FCoreDelegates::ModalMessageDialog and takes an extra EAppMsgCategory argument
#jira
#rb Dave.Belanger
[CL 26322954 by jamie dale in ue5-main branch]
[FYI] dmytro.vovk, eric.knapik
Original CL Desc
-----------------------------------------------------------------
Pack FUObjectItem in Shipping builds to avoid 20% mem waste
#rb Johan.Torp
[CL 26305895 by james studdart 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]