* Moved dllexport from type to methods/staticvar in all Engine runtime code. This improves compile times, memory and performance in dll builds
[CL 26082288 by henrik karlsson in 5.3 branch]
Adding some Pak initialization and deinitialization logging to track down a horde only ensure.
#rb: trivial
[CL 25795014 by eric knapik in ue5-main branch]
I've reviewed all code using async requests and we had multiple places incorrectly handling the stat: some placed failed to decrease the counter, while others would decrease it when they shouldn't. The main cause was the fact that when we create an async request and pass nullptr as the target memory, the request allocates the memory itself and increases the STAT_AsyncFileMemory. However, when we call GetReadResults() on such requests, the responsibility is on the caller to balance the calls and decrease the stat, which is not very obvious and leads to the mentioned bugs. On top of that, when we call GetReadResults() we may not have the knowledge as to whether the returned memory was allocated by the request or not (which may affect whether we should touch the stat at all).
Resolved by adding IAsyncReadRequest::ReleaseMemoryOwnershipImpl member, which may be used by request implementations to do the proper clean up (balance the stat). This way requests take the full responsibility for their changes and users of the requests don't need to know their implementation details.
#preflight none
#rb Patrick.Laflamme
#jira UE-185064
[CL 25664733 by Wojciech Krywult in ue5-main branch]
First reset the GIoDispatcher pointer.
Then stop the IoDispatcher thread and wait for all pending requests to finish.
Then shutdown the backends.
Then destroy the IoDispatcher itself.
#rb per.larsson
#rnx
#preflight 644bbbe91c2846595c308b2a
[CL 25298458 by pj kack in ue5-main branch]
An optimization to UE_LOG exposed an issue in Clang when targeting Windows. Log statements in inline functions of imported types fail to compile.
#preflight 63f7f350ef1b24bf94367191
#rb Zousar.Shaker
#rnx
[CL 24397809 by devin doucette in ue5-main branch]
[FYI] james.doverspike
Original CL Desc
-----------------------------------------------------------------
Cosmetic bulk asset streaming
Adds support for marking skeletal meshes and textures as optional files that stream from the cloud, typically used for cosmetics. Meshes and textures will now upload all of their non-inlined LODs as optional bulk files to the cloud, removing them from the pak files. The client will download into the VirtualFileCache in PersistentDownloadDir/VFC, which evicts least recently used LODs. These assets will have a longer delay to update to the higher quality LOD when their LODs are not in cache because they are now downloaded on-demand.
[CL 24373261 by james doverspike in ue5-main branch]
Adds support for marking skeletal meshes and textures as optional files that stream from the cloud, typically used for cosmetics. Meshes and textures will now upload all of their non-inlined LODs as optional bulk files to the cloud, removing them from the pak files. The client will download into the VirtualFileCache in PersistentDownloadDir/VFC, which evicts least recently used LODs. These assets will have a longer delay to update to the higher quality LOD when their LODs are not in cache because they are now downloaded on-demand.
[CL 24331735 by james doverspike in ue5-main branch]
[FYI] james.doverspike
Original CL Desc
-----------------------------------------------------------------
Cosmetic bulk asset streaming
Adds support for marking skeletal meshes and textures as optional files that stream from the cloud, typically used for cosmetics. Meshes and textures will now upload all of their non-inlined LODs as optional bulk files to the cloud, removing them from the pak files. The client will download into the VirtualFileCache in PersistentDownloadDir/VFC, which evicts least recently used LODs. These assets will have a longer delay to update to the higher quality LOD when their LODs are not in cache because they are now downloaded on-demand.
[CL 24253381 by bob tellez in ue5-main branch]
Adds support for marking skeletal meshes and textures as optional files that stream from the cloud, typically used for cosmetics. Meshes and textures will now upload all of their non-inlined LODs as optional bulk files to the cloud, removing them from the pak files. The client will download into the VirtualFileCache in PersistentDownloadDir/VFC, which evicts least recently used LODs. These assets will have a longer delay to update to the higher quality LOD when their LODs are not in cache because they are now downloaded on-demand.
[CL 24251508 by james doverspike in ue5-main branch]
ClearOldBlockTasks can BusyWait, which can call FAsyncIOCPUWorkTask::DoTask, which can try to take a FPakAsyncReadFileHandle's CriticalSection. FPakAsyncReadFileHandle's CriticalSection must be entered first when holding both CriticalSection and CachedFilesScopeLock to prevent deadlocks.
#rb Per.Larsson
#rnx
#preflight 63e144cdc2257e56f4ee08a3
[CL 24035541 by Matt Peters in ue5-main branch]
Update to make IsSymlink() return an enum which allows callers to identify whether or not it is implemented for the calling PlatformFile. Also, added appropriate implementation for FPakPlatformFile which was the cause of ensure's on previous submission which was backed-out.
(see review https://p4-swarm.epicgames.net/reviews/23757906 for usage in SolarisEditorModule.cpp)
#rnx
#rb yiliang.siew
#rb brandon.schaefer
#rb calvin.zheng
#rb zack.neyland
#preflight 63d186e0ef20a5272dba95ae
[CL 23863390 by jared cotton in ue5-main branch]