On Windows, "TargetedRHIs" is now split into "D3D11TargetedShaderFormats", "D3D12TargetedShaderFormats" and "VulkanTargetedShaderFormats". "TargetedRHIs" is still parsed for backwards compatibility.
Using this, projects can now be more easily configured for D3D12-only or even Vulkan-only.
Updated FShaderFormatsPropertyDetails to use FName instead of FString for shader platforms. Also added a filtering method for mixed RHI platforms like Windows.
#jira none
#rb mihnea.balta, josh.adams
#preflight 6287cbf46c7692ac8cc8805f
[CL 20300786 by christopher waters in ue5-main branch]
Can now provide reference iostore containers to reuse compressed chunks from. If a match is found on *the decompressed data*, instead of recompressing the blocks, they are read off of disk. This allows tweaks of the compressor algorithm without introducing changes as the runtime still sees the exact same data. Additionally this allows for fairly dramatic staging speedups as nvme speeds are significantly faster than high effort compressions. This is distinct from the DDC compression because:
1) DDC compression ties in the compressor version/method
2) We are explicitly interested in chunks that are deployed to end users, not merely cached for speed.
To facilitate this, several changes were made to IoStore:
FIoStoreReader now directly reads from IFileHandles* instead of routing through the GenericPlatformFile async read system, as that system is sensitive to build #defines and can result in constant file opens under load (indeed, for anything not a .pak file, every read is an open/close).
Cold file cache read speed improvements from ~140MB/s to ~1 GB/s. Hot is more.
Additionally:
FIoStoreReader switched to UE::Tasks from taskgraph for tasks in order to facilitate task retraction during waits as the previous ReadAsync call was trivial to deadlock when called from worker threads due to its use of TFuture<>.
FIoStoreReader::ReadCompressed now returns the compressed blocks as they were on disk - padded to AES encryption block size.
#rb fabian.giesen
#rb jeff.roberts
#preflight 627586dcf77c9c2b543d4d8b
[CL 20086673 by Dan Thompson in ue5-main branch]
Initialize all members in FLauncherTask, and move ReadPipe and WritePipe to FLauncherUATTask.
Initialize all members in FLauncherWorker.
Delete FLauncherVerifyProfileTask since Profile->IsValidForLaunch() is aready checked in FLauncher::Launch before creating the FLauncherWorker.
Move duplicate parsing of "Running Package@Device" and device package handling from all separate wait tasks to the FlauncherWorker.
Move handling of killing the uat process tree from all separate wait tasks to the FLauncherWorker.
Change the launch wait task name from "Build Task" to "Launch Task" to correctly display "Launching..." instead of "Validating/Building executable for..."
#jira none
#rb carlmagnus.nordin
#rnx
#preflight 621c8f73037be0078c8bbfc9
[CL 19195883 by PJ Kack in ue5-main branch]
- Added support for passing the LaunchOnTarget along to the LaunchOn process
#jira UE-138006
#rb matt.peters
#robomerge Release-5.0
#preflight 61e89cb363639eb6f607db67
[CL 18669007 by Josh Adams in ue5-main branch]
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971
[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035
[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
- changed Cooker arguments from -CookOnTheFly -IoStore to -CookOnTheFly -ZenStore
- changed Zen host argument from -StorageServerHost to -ZenStoreHost
- updated UAT to support running CBTB with -ZenStore
- updated StorageServerConnection to handle multiple hosts from command line
Cooker:
CBTB: -ZenStore
COTF: -ZenStore -CookOnTheFly
Game:
CBTB: -ZenStoreHost=<ip> or <ip1,ip2>
COTF: -ZenStoreHost=<ip> or <ip1,ip2> -CookOnTheFly
#rb CarlMagnus.Nordin
#jira none
#rnx
#ROBOMERGE-SOURCE: CL 16849969 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)
[CL 16849982 by per larsson in ue5-release-engine-test branch]
This override is only used if the list isn't empty, otherwise the project default is used. Cook-on-the-fly isn't impacted by this change, as it cooks assets on-demand so doesn't need to pre-cook a certain list of cultures.
#rb Patrick.Laflamme
[CL 16407969 by Jamie Dale in ue5-main branch]