- The manifest was for a prototype version of the IoStore commandlet and would attempt to record every bulkdata entry during a cook, which would allow us to generate the FioChunkId for each bulkdata entry when building the ucas files.
- Due to changes during development we stopped requiring this data and it was never used in actual production code.
- Since this code was never in use we can just remove it.
* IoStoreUtilities
- No longer attempt to load the manifest
- Removed use of BulkdataTypeToChunkIdType and just use the EIoChunkType directly instead.
#rb CarlMagnus.Nordin
#jira UE-112697
#test Full stage of ShooterGame
#rnx
#preflight 606f039028671300019c806a
[CL 15954210 by paul chipchase in ue5-main branch]
# Also exposed the typed element selection set to the queries API in ITF.
# Implemented a stash/pop selection on the typed element selection set for modes to use.
#Jira UE-107091
#rb jamie.dale chris.gagnon ryan.schmidt
#ROBOMERGE-SOURCE: CL 15359303 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)
[CL 15360406 by brooke hubert in ue5-main branch]
Fix another issue of an FArchive that serializes object references without deriving from FArchiveUObject. This one affects serialization to/from text assets. Confirmed I can export an asset containing object references to text format when the fields are of wrapped pointer type. Comparing the resulting output to a text export of the same asset when the fields are raw pointers show no diffs aside from Guid and Localization which are shown to vary from export-to-export or editor session to editor session.
NOTE: Unlike lazy/soft/weak pointers, I want serialization of wrapped pointers to match serialization of raw pointers, so I don't create a separate indexed array for it in the text output, it goes into the same "Objects" array as raw object pointers.
#rb devin.doucette
#fyi graeme.thornton
[CL 15201151 by Zousar Shaker in ue5-main branch]
Address the following serialization issues:
1) Ensure ObjectPtr Property can convert from SoftObjectProperty and anything else that Object Property can convert from by removing its ConvertFromType override.
2) Fix serialization of wrapped pointers through archives that don't derive from FArchiveUObject, but still expect to be able to serialize both raw and wrapped object references (FNetBitWriter, FExportArchive, and FObjectAndNameAsStringProxyArchive).
3) Restore assert in base FArchive serialization of wrapped object pointer which I had erroneously made in CL15130804 now that it is clear that it is not safe to be relying on silently not writing/reading a wrapped object pointer (even if that may be the default behavior for a raw pointer).
4) Bump Niagara custom version guid to avoid issues with incorrectly serialized data in DDC.
#jira UE-106943
#rb devin.doucette
#fyi rob.krajcarski
[CL 15178163 by Zousar Shaker in ue5-main branch]
Create a new interface IPackageResourceManager that handles all attempts to load packages from storage. The default implementation passes through to loading from IFileManager. Future implementations will load from other services such as the EditorDomain and TargetDomain.
Add FPackagePath class that holds a LocalFilePath or LongPackageName, or a relative path to a package under a mounted content root (which can be converted into either the LocalFilePath or LongPackageName).
Modify LinkerLoad, BulkData, and AsyncLoader to use FPackagePath and IResourceManager.
Modify UPackage and FLinkerLoad to have a FPackagePath instead of a Filename.
#rb Paul.Chipchase, CarlMagnus.Nordin, Francis.Hurteau, Devin.Doucette
#rn Major Core
[CL 14814912 by Matt Peters in ue5-main branch]
- This stops code compiling fine in the editor then breaking when compiled for a different config.
#rb Martin.Ridgers
#fyi ben.ingram
#rnx
[CL 14812609 by paul chipchase in ue5-main branch]
- Add protection against async property accessed during async build and postload.
- Split PostLoad into 3 steps with the most part now being made async.
- Make Build/BatchBuild API async when the feature is activated.
- Add a new StaticMesh compilation manager. (This will be refactory later to reduce duplicated code with texture compiler).
- Skip RenderState creation for any static mesh component still being built so they only show up when ready.
- Fixed DistanceField and MeshCard computation that might trigger too soon if fixups are required to RenderData during PostLoad.
- Dynamic priorisation for building and updating static meshes nearest to the viewport.
- Implement different PIE modes, current default is to stall only for mesh that might affect nagivation/collision for players/bots.
- Add a new generic interface for assets being built (still a WIP).
- Add ability in FrontEnd filters to skip serialization of asset being async compiled and refresh when compilation finishes.
- Prevent auto-save while textures and static meshes are being built (same as shaders)
- Logic has been reordered in some Fortnite Building Component to avoid unnecessarily touching static mesh properties.
General Optimizations
- Use cached thumbnails until shaders/textures/static meshes are ready to improve performance and avoid rendering incomplete thumbnails.
DEBUGGING
- Can be forcibly enabled/disabled through command-line via -asyncstaticmeshcompilation=[off, on, paused]
- Can pause staticmesh compilation using Editor.AsyncStaticMeshCompilation = 2 or -asyncstaticmeshcompilation=paused
- Can manually resume a specified amount of paused compilation using Editor.AsyncStaticMeshCompilationResume [Num]
- Can forcibly wait on all compilation using Editor.AsyncStaticMeshCompilationFlushAll
BENCHMARKS
- 2m19s to 17.9s for Loading FortGPUTestbed's LumenTest with an empty local only DDC
- 2h45m to 5mxxs for Loading Reverb's P_World with an empty local only DDC
- 17m29 to 10m27s for Loading Apollo_Terrain_Edit with an empty local only DDC
TESTS
- Loading maps from Reverb, Fortnite, ShooterGame, QAGame, FortGPUTestbed
- Content browser interactions while still under heavy compilation
- Importing with Datasmith / Dataprep
- Working with the new Mesh Modeling Tool
- Shutting down the editor while loading
- Most of EngineTest Test Suite
REFERENCES
- Design https://docs.google.com/document/d/1O4GI1G9AtQN6l0SaGFfXw0DyNhlLunLoEqne5INvxIQ
- Documentation https://docs.google.com/document/d/1KCdFEMhhcsGwfgOisTVwlOwtsmEd7qbB0V6Tc39Gb10
#rb Francis.Hurteau
[CL 14688146 by danny couture in ue5-main branch]
Also add protection so meshdescription can be read from multiple threads in editor
- Loading Reverb's P_World with empty DDC
- 319GB to 242GB peak private byte
- 166GB to 80GB permanent memory usage after map load
#rb Richard.Talbot-Watkins, Matt.Peters, Paul.Chipchase
[CL 14544739 by danny couture in ue5-main branch]
-Moved processing to async thread
-Switched to much more efficient batched IO using the new IODispatch API
-Added fallback/legacy path for when IODispatch is disabled or not supported on the platform
-Changed page size back to 128KB (from 256KB) and doubled number of streaming pages
-256MB saving from smaller root pages. 32MB of those used for IO staging buffer
#rb graham.wihlidal
#fyi brian.karis
[CL 14110783 by Rune Stubbe in ue5-main branch]
Move RefCount tracking for imports from import object level to package level.
Only track currently loaded public exports, and their packages.
Replace import object weak pointers with public export raw pointers (uobject index).
Add new NotifyUnreachableObjects GC hook to get information about all objects to be destroyed.
When a public export is destroyed, clean up its raw pointer, and mark its package as not loaded.
When a package is destroyed, clean up its ref count tracking data.
#rb per.larsson
#ushell-cherrypick of 13114335 by PJ.Kack
#ROBOMERGE-SOURCE: CL 13147624 via CL 13147625 via CL 13147626 via CL 13147627
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v688-13145358)
[CL 13147628 by pj kack in Main branch]
#jira none
#rb none
#ushell-cherrypick of 12997588 by PJ.Kack
#ROBOMERGE-SOURCE: CL 12997796 in //UE4/Release-4.25Plus/... via CL 12997808
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)
[CL 12997823 by pj kack in Main branch]