* Skips the error(s) / warning(s) summary at the end of the commandlet execution, with the side effect of binding the process exit code to the actual result of the commandlet
* Enables FastExit to exit the process as soon as the commandlet finishes, which avoids possible crashes during shutdown. The engine isn't shutdown cleanly.
#rb jeanfrancois.dube
[CL 24291575 by sebastien lussier in ue5-main branch]
- Calling memcpy/memset/memcmp with null arguments.
- Binding a reference to a null value.
#rb Matt.Peters, Steve.Robb
#preflight 63ecca1b956709374aff8efe
[CL 24251461 by andrew scheidecker in ue5-main branch]
#fyi wouter.dek
The problem with this change is that late-created shader types will not be in the shadertype list and as such will not be included in the shader map even if their ShouldCompilePermutation() would return true.
Original CL Desc
-----------------------------------------------------------------
Convert shader type and parameter struct metadata from global variables to static locals to defer initialization. This allows us to create these types dynamically at startup, while keeping the rest of the infrastructure as is.
#preflight 63eca58e7d2ec3d2fd286d9a
#rb zach.bethel
[CL 24240825 by Arciel Rekman in ue5-main branch]
This coalescing has a few benefits. First, it allows async LPI and mesh command creation jobs to handle level streaming events. Second, batches more work together which opens more doors to parallelization in follow-up CL's.
Finally, this change splits the mesh caching jobs for nanite and ray tracing off into their own tasks, which improves parallelism.
#preflight 63ea8a675d72661e36f1a9b9
[CL 24195188 by zach bethel in ue5-main branch]
- Moved a static function from LaunchEngineLoop.h that was never used externally to a static in LaunchEngineLoop.cpp
#rb Wojciech.Krywult
#jira none
#preflight 63e3c6ce902d6ba787d24a9e
[CL 24073758 by Josh Adams in ue5-main branch]
This applies to running the tests via the -rhiunittest command line flag. Running them via the automation framework was already happening at the correct time.
#rnx
#jira none
#preflight trivial
#rb Luke.Thatcher
[CL 24048408 by mihnea balta in ue5-main branch]
GetLocalizationPathsForEnabledPlugins will now avoid loading any plugin modules (from its previous call to ConfigureEnabledPlugins), and any plugins that become enabled between GetLocalizationPathsForEnabledPlugins calls will explicitly notify that their localization data is available (as already happens for explicitly loaded plugins).
#preflight 63da96dc7a39a18021762488
#rb Robert.Manuszewski, Rex.Hill
#rnx
[CL 23961030 by jamie dale in ue5-main branch]
Fixes several untagged allocations which occur during this phase of engine startup.
#jira UE-153501
#preflight 63d9874ccf52968117d955c0
[CL 23938166 by logan buchy in ue5-main branch]
This change takes the existing async loading that was added for game localization data in CL# 14661627 and expands it to cover all localization data. Async localization tasks are chained together as dependencies to preserve the existing order of operations (plus going wide doesn't help due to contention on the live-table), and can be waited on at any point (eg, after a loading screen) by calling FTextLocalizationManager::WaitForAsyncTasks (though the engine init flow takes care of waiting for you unless you're loading additional plugin/chunked localization data).
This change takes the existing support for dynamically loading chunked localization data on PAK chunk load, and extends it to support dynamically loading any additional localization data. This is used by the engine to support dynamically loading the localization targets associated with explicitly loaded plugins. These loads are all async, so must be waited on if you need them to block.
Note: BeginInitGameTextLocalization and EndInitGameTextLocalization have been removed as part of this change. You would now just use InitGameTextLocalization (which is async) followed by FTextLocalizationManager::WaitForAsyncTasks.
#preflight 63d28b12a2003ee58af50146
#rb Leon.Huang, Rex.Hill
[CL 23888558 by jamie dale in ue5-main branch]
A lot of files touched, but generally it's a mechanical matter of removing the global variable GNumAlternateFrameRenderingGroups, and treating all code using it as if it's a fixed constant of one. If a conditional becomes always false, the code block is removed. Certain utility functions only called from dead stripped AFR code are then removed (e.g. RHIBroadcastTemporalEffect). On the D3D11 side, RHIBeginUpdateMultiFrameResource / RHIEndUpdateMultiFrameResource become NOPs (return at the top of the function) when GNumAlternateFrameRenderingGroups is 1, so those are removed across the board.
#jira none
#rb jason.nadro
#preflight 63cea0afb91ac945f5117110
[CL 23820752 by jason hoerner in ue5-main branch]