This fixes a race condition between UStaticMesh::GetPlatformStaticMeshRenderData calling GetPackage from a task thread to know if the package is already cooked for editor, while we are moving an HLOD mesh from an external actor package into a streaming level during cooking, resulting in a discrepency betwen the package RF_HasExternalPackage and the content of the external package hash map. The situation still exists, but we know that it's not going to cause problems in that specific case.
[REVIEW] [at]francis.hurteau
#rb francis.hurteau
#p4v-cherrypick 27150485
#localization none
#tests none
[CL 27391618 by jeanfrancois dube in 5.3 branch]
#rb Per.Larsson
#jira UE-192888
#rnx
#lockdown mark.lintott
### Problem
- When the bulkdata reference is written out it is either relative to a value stored in the package summary or absolute for the file that it is being written to. We only store the absolute value when writing an editor domain package or a cooked package, in which case the bulkdata will be marked with the 'BULKDATA_NoOffsetFixUp' flag so we know not to convert the offset from relative to absolute on package load.
- If a package was loaded from the editor domain and then saved to the workspace domain it would retain the 'BULKDATA_NoOffsetFixUp' as it was not being cleared during serialization. This caused problems as we do not expect to encounter the flag when loading from the workspace domain.
-- In 5.0 and 5.1 packages saved to the workspace domain with 'BULKDATA_NoOffsetFixUp' were doing so with absolute offsets.
-- In 5.2 due to a major refactor on how we store data, packages being saved to the workspace domain with 'BULKDATA_NoOffsetFixUp' were doing so with relative offsets.
### Fix
- When saving a package the 'BULKDATA_NoOffsetFixUp' flag is cleared and then only reapplied to the package if required.
- To allow us to load packages that have been already saved out incorrectly the loading logic has been modified.
-- The existing check was to see if the package was from the editor domain, if so we assumed absolute offset and for all other cases relative. This is because the linkerloading code assumes we are loading from uncooked data in the editor.
-- We now also check the 'BULKDATA_NoOffsetFixUp' flag, and if it is set AND the package has an older version than EUnrealEngineObjectUE5Version::DATA_RESOURCES we assume the offsets are absolute, if the package is of the newer format, we assume they are relative and fix them up accordingly.
- Added a cvar "Serialization.ApplyBulkDataOffsetFix" which can be set to false to disable the loading fix and restore the previous behaviour. This is provided to de-risk the submit.
[CL 27134603 by paul chipchase in 5.3 branch]
Allow verification of GC assumption on full GC purges in Test builds.
Additional debug options for garbage collection.
CVars gc.VerifyAssumptions, gc.VerifyAssumptionsOnFullPurge and gc.VerifyAssumptionsChance to control frequency of verifying GC assumptions.
CVar gc.ForceEnableGCProcessor to force GC to use the debug processor to allow GC to crash in the context of a memory error / assumption violation rather than later when batchers are handled in the optimized processor.
[REVIEW] [at]mickael.gilabert
#localization none
#tests Tested in 26.10
[CL 27108238 by robert millar in 5.3 branch]
[REVIEW] [at]dmytro.vovk
#rnx
---
Pack FUObjectItem in Shipping builds to avoid 20% mem waste v2
#ushell-cherrypick of 26308365 by dmytro.vovk
---
Packed Chaos::FShapeInstanceProxy to fit into 192b MB3 bin
#ushell-cherrypick of 26826015 by dmytro.vovk
---
Rearranged data in Chaos::FTrimeshBVH::FChildData to avoid padding due to alignment requiremnts
#ushell-cherrypick of 26954340 by dmytro.vovk
---
Added a proper Switch linker version script file to make all symbols hidden by default
#ushell-cherrypick of 26768446 by dmytro.vovk
[CL 27027194 by mickael gilabert in 5.3 branch]
TWeakPointers must be dereferenced with GetEvenIfUnreachable during GC because GC initially marks all possibly-collectable objects as Unreachable before scanning the heap.
#rb justin.moe, pamela.figueroa
[REVIEW] https://p4-swarm.epicgames.net/reviews/26971504/, [at]mickael.gilabert
#localization none
#tests Stepped through new implementation in the debugger in the editor.
[CL 26999856 by robert millar in 5.3 branch]
- Enabled cpu scope tracing of object names (blueprints, functions) by default when app is not running as a commandlet (still requires "cpu" trace channel and -statnamedevents to be enabled). Enabling AssetLoadTime trace channel will enable tracing of object names also in commandlets (ex. cooking).
- Improved performance when tracing "statnamedevents" cpu scopes (by using a new optimized code path that uses an FName stat id together with a TCHAR* descriptive name).
#jira FORT-532106
#rb Matt.Peters
[CL 26814181 by ionut matasaru in 5.3 branch]
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]
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 26500255 by matt peters in 5.3 branch]