* Modified EnableNewSave cvar to use multiple values: 0: disabled, 1: enabled for cook, 2: enabled for uncooked, 3: enabled everywhere
* Added proper Prestream Packages support to Save2 since it isn't something that will be deprecated in the end
* Fixed new package not being saved properly when passing in a Base Object because they aren't properly marked as fully loaded in Save1
* Added a way for SaveConcurrent to use serial save with Save1 for now when not being passed in the SAVE_Concurrent flag
* Switched Save2 traces to use the SaveTimeChannel like Save1
#rb Matt.Peters
[CL 14652312 by Francis Hurteau in ue5-main branch]
Add an additional check in the linker diff commandlet to check the old save algo against itself and catch potential save byproduct
Add a consistent vs algo linker diff mode for the cooker, consistent mode will detect save byproduct on the same save algorithm while algo mode will compare the two algorithm
#rb Devin.Doucette
[CL 14593292 by Francis Hurteau in ue5-main branch]
- ObjectPtrTest was just checking for windows. HL2 falls into the same category
- D3D12RHI.cs now has AGS properly so that D3D12RootSignature includes process correctly
#RB:none
#CodeReview: steve.smith
[CL 14587450 by Jason Bestimt in ue5-main branch]
Enabled back checks on power of 2 textures when generating mips.
#rb josh.adams
#jyi rolando.caloca
#jira UE-101452
[CL 14550682 by Uriel Doyon 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]
This fixes a regression in behavior where structs may receive partial updates due to NAKs.
#jira UE-101061
#review-14481580 @Brian.Bekich
#rb Brian.Bekich
[CL 14486636 by Jon Nabozny in ue5-main branch]
The new function is equivalent for all cases except the cases below (which were already deprecated):
Case) An InOuter was provided with no InLongPackageName, and the InOuter had no existing linker, and the InOuter is a Memory-only package, and a file exists on disk with the same path.
Change) The previous version would have called CreateLinker with the filename from disk; the new version will silently skip the CreateLinker call and return nullptr.
Case) Load_AllowDll package flag was set, and an InOuter was provided with no InLongPackageName, and the InOuter had no existing linker, and the file did not exist on disk.
Change) The previous version would have silently returned nullptr; the new version will issue a warning and return nullptr.
Case) Load_NoWarn or Load_Quiet was provided, and an InOuter was provided with no InLongPackageName, and the InOuter had no existing linker, and the file did not exist on disk.
Change) The previous version would have issued a warning and returned nullptr; the new version will silently return nullptr.
Case) An InOuter was provided, and an InLongPackageName was provided, and the InOuter had no existing linker, and no package existed for the (possibly redirected) InLongPackageName.
Change) The previous version would have created an unused package with name InLongPackageName, and then called CreateLinker on the InOuter; the new version will not create the unused package.
Case) An InOutLoadContext is provided that is not equal to FUObjectThreadContext::Get().GetSerializeContext() and we reach the call to CreateLinker.
Change) The previous version would have passed FUObjectThreadContext::Get().GetSerializeContext() to CreateLinker; the new version will pass InOutLoadContext.
Note) This case does not currently exist in any callsite in the Engine; they all pass nullptr or FUObjectThreadContext::Get().GetSerializeContext() for the InOutLoadContext.
Case) An InOuter was not provided, and a CompatabilityGuid was provided, and a package and linker already exists in memory for the given name, and the guid on disk for the packagename matches the CompatabilityGuid, but the guid from the linker in memory does not.
Change) The previous version would have returned nullptr; the new version will ignore the mismatch and return the linker in memory.
#rb Francis.Hurteau, Robert.Manuszewski
#rnx
[CL 14480063 by Matt Peters in ue5-main branch]
- FConfigCacheIni::ForPlatform(PlatformName) is the way to get the in-memory (won't write to disk) ini system for a different platform. Can pass it GEngineIni, etc for the filename ( FConfigCacheIni::ForPlatform("IOS")->GetString(....., GEngineIni); )
- GEngineIni and some others (the "stadnard, runtime ini files") are no longer filenames, but identifiers that will work with other platform Ini systems
- Modified "GETINI" console command to allow for a <Platform>@ prefix, to get another platform's ini value (using new multi-platform config) (GetIni [Platform@]IniFile:Section.SubSection Key)
#rb rolando.caloca
#fyi chris.gagnon,Sebastian.Nordgren
[CL 14473359 by Josh Adams in ue5-main branch]