Also fix a memory leak when doing unversioned serialization of properties with destructors and default values: "loading as zero" doesn't call the destructor on the value being overwritten, and so isn't safe to use for properties that require destruction.
#rb Devin.Doucette, Robert.Manuszewski
[CL 26706194 by andrew scheidecker in 5.3 branch]
#ushell-cherrypick of 26132976 by andrew.scheidecker
#ushell-cherrypick of 26180430 by andrew.scheidecker
#ushell-cherrypick of 26180927 by andrew.scheidecker
#ushell-cherrypick of 26184877 by andrew.scheidecker
#ushell-cherrypick of 26281078 by Johan.Torp
#ushell-cherrypick of 26346541 by andrew.scheidecker
[CL 26605123 by andrew scheidecker in 5.3 branch]
#rnx
#rb PJ.Kack
#ushell-cherrypick of 26178601 by danny.couture to fix issues seen in "Test Content Worker Docker Image Win64"
[CL 26234854 by rob perren in 5.3 branch]
- Also prevents constructed objects from being assigned to the wrong package during highly recursive phase
#rnx
#rb Francis.Hurteau, PJ.Kack
[CL 26087881 by danny couture in 5.3 branch]
Only preload the current package instead of the whole hierarchy recursively
#rnx
#rb PJ.Kack, Francis.Hurteau
#preflight 64788f45947ff6973c0a1e7c
[CL 25788188 by danny couture in ue5-main branch]
I've reviewed all code using async requests and we had multiple places incorrectly handling the stat: some placed failed to decrease the counter, while others would decrease it when they shouldn't. The main cause was the fact that when we create an async request and pass nullptr as the target memory, the request allocates the memory itself and increases the STAT_AsyncFileMemory. However, when we call GetReadResults() on such requests, the responsibility is on the caller to balance the calls and decrease the stat, which is not very obvious and leads to the mentioned bugs. On top of that, when we call GetReadResults() we may not have the knowledge as to whether the returned memory was allocated by the request or not (which may affect whether we should touch the stat at all).
Resolved by adding IAsyncReadRequest::ReleaseMemoryOwnershipImpl member, which may be used by request implementations to do the proper clean up (balance the stat). This way requests take the full responsibility for their changes and users of the requests don't need to know their implementation details.
#preflight none
#rb Patrick.Laflamme
#jira UE-185064
[CL 25664733 by Wojciech Krywult in ue5-main branch]
The code for parsing a view of the ZenPackageSummary has been extracted from AsyncLoading2.cpp into a private h/cpp and is possible to use from the header diffing code when printing out detailed diffs, but is not used yet.
#rb matt.peters
#rb pj.kack
#jira UE-175237
[CL 25549055 by zousar shaker in ue5-main branch]
#rb Per.Larsson
#jira none
#preflight 64674758c571db717b037aaf
- BULKDATA_ForceStreamPayload and BULKDATA_SerializeCompressedBitWindow have not done anything for sometime.
- BULKDATA_BadDataVersion was a bug added some years ago which could've caused DDC pollution. Since then the DDC keys for the problematic assets have been changed several times and there should no longer be any danger.
- BULKDATA_Unused technically works but is unused and there does not seem to be any demand for it. This flag will probably remain deprecated for longer than the others to check for any valid external feedback.
[CL 25541994 by paul chipchase in ue5-main branch]