Commit Graph

382 Commits

Author SHA1 Message Date
anton dunchev
7837872066 [Trace] Fix CIS Add TraceLog module to linker
[CL 33361272 by anton dunchev in ue5-main branch]
2024-04-30 20:27:05 -04:00
anton dunchev
69fd53db6a [LLM] Scope filesystem callbacks to shader code into Shader LLM, added more asset tags
#rb robert.millar
#tests PIE

[CL 33360979 by anton dunchev in ue5-main branch]
2024-04-30 20:09:23 -04:00
pj kack
1754180bc2 ZenLoader: Extend container mount logs to get some more information on errors of type "Failed reading chunk for package: (Not Found)" when there is no ExportBundleData chunk for a package known by the loader.
Add LexToString(const FIoContainerId& ContainerId).

#rb Per.Larsson
#rnx

[CL 33193351 by pj kack in ue5-main branch]
2024-04-24 02:52:07 -04:00
dan thompson
2b3a8d681c FCompression interface update to 64 bit.
-> Done because UE disables 32 bit down cast - silently could overflow.
-> General use should automatically work.
-> Deprecate some old 32 bit functions not generally used.
-> Deprecate/rename some ancient flags for future removal.
-> Update CompressorData to uint ptr for future use
-> Remove some stuff deprecated in 4.21 (2018)
#rb fabian.giesen
#jira UE-173911

[CL 31688300 by dan thompson in ue5-main branch]
2024-02-21 12:49:23 -05:00
steve robb
f8d47335a4 Replaced RemoveAt(N, 1, EAllowShrinking::*) with RemoveAt(N, EAllowShrinking::*).
[CL 31626444 by steve robb in ue5-main branch]
2024-02-19 16:51:58 -05:00
matt peters
65511c6a9b Fix crash when running game with legacy pakfiles (-skipiostore). FPakReadRequestBase and all subclasses of IAsyncReadRequest need a default implementation for the new EnsureCompletion function rather than a fatal error if called.
#rnx
#rb danny.couture

[CL 31567969 by matt peters in ue5-main branch]
2024-02-16 11:40:30 -05:00
matt peters
149d6dc477 PakFiles: DeleteRecords: Allow files that are duplicated between chunks to still be found if one chunk deleted them in a patch but the other chunk did not.
#rnx
#rb David.Harvey

[CL 31563886 by matt peters in ue5-main branch]
2024-02-16 09:47:47 -05:00
per larsson
dccb6df43e I/O - changed dispatcher backend interface from resolving a single to a batch of I/O requests.
#rb Paul.Chipchase, Martin.Ridgers
#rnx

[CL 31469283 by per larsson in ue5-main branch]
2024-02-14 08:43:21 -05:00
matt peters
398a33a33c PakFiles: Suppress spurious log message "Mount point '%s' is not mounted to a valid Root Path yet" when the mount point is a parent path of existing root paths.
#rnx
#rb Sebastian.Thomeczek

[CL 31396542 by matt peters in ue5-main branch]
2024-02-12 15:50:54 -05:00
matt peters
b8c9a2b406 PakFiles: deprecated OnPakFileMounted2: Prevent calling Broadcast if unsubscribed, to prevent the invalid-simultaneous-writeaccess detector from spuriously firing.
#rnx
#rb Daniel.Lamb, Justin.Marcus

[CL 31338730 by matt peters in ue5-main branch]
2024-02-09 09:55:14 -05:00
steve robb
f029468598 Fixed up a lot of bool-taking container resize functions to take EAllowShrinking instead.
[CL 30729174 by steve robb in ue5-main branch]
2024-01-19 16:41:35 -05:00
paul chipchase
121e9d5e0a Add new delegates to better allow various IoDispatcher subsystems to mount their containers when .pak files are mounted.
#rb Per.Larsson
#jira UE-189912
#rnx

- The filebased iostore system is tightly linked to the existing pakfile code and recieved notifications when a PakFile is mounted/unmounted directly in code. However we do not want to force the IAS system on all users, it should be opt in. So we need a generic way to hook into the PakFile system and be notified about PakFile operations.
- Add a new delegate (FCoreInternalDelegates::GetOnPakMountOperation) that is fired when ever a pakfile is mounted or unmounted.
- Add a new delegate (FCoreInternalDelegates::GetCurrentlyMountedPaksDelegate) that can be queried to find all of the pakfiles that are currently mounted.
- Both delegates are in a new internal header file to limit their use to the engine which will make it easier to change in the future if we need to do so.

[CL 30680178 by paul chipchase in ue5-main branch]
2024-01-18 05:21:17 -05:00
matt peters
1f58bad7b9 PakFiles: Restore the severity of MissingPrunedPakFile to error, now that we have fixed the spurious instances of the error.
#rnx
#rb Zousar.Shaker

[CL 30331663 by matt peters in ue5-main branch]
2023-12-14 16:32:19 -05:00
per larsson
7cd0b42bd9 PAK - remove internal encryption key cache
#rb Paul.Chipchase

[CL 30119256 by per larsson in ue5-main branch]
2023-12-05 10:32:58 -05:00
johan torp
f910700701 Memory-optimized custom IOStore hash map - 65.7 -> 25.9MB for internal project on Gen5 console
Exploits that the map is large (~1M) and rarely modified

Memory saved by:
* TMap saves slot and next-in-slot using 8B / item. FPackageIdMap is built once presorted, next-in-slot is next item. Only use 1bit / item to mark slot end.
* Only store 3/4 of FPackageId key - 1/4 is implicit by slot, which requires min 128K capacity
* Up to 400% load factor using 4-stage lookup, slot -> 2B hash -> 4B hash -> value. 2B array fits 32 items / 64B cache line, enabling a high load factor with little perf loss
* More compact entry handle and entry memory layout
* Deduplicating some entries
* Carefully storing entry data so container ownership is inferable from offset allows dropping 7.5MB of FIoContainerHeader::PackageIds and non-deduped StoreEntries

Surprisingly lookup got >4.5x faster too, despite 4 memory indirections instead of 2. Lookup can be optimized further by vectorizing. Rebuilding the map is also faster.

#rb pj.kack

[CL 29906389 by johan torp in ue5-main branch]
2023-11-23 03:17:18 -05:00
ben woodhouse
161e697423 Add a cvar s.IoDispatcherForceSynchronousScatter to allow forcing IODispatcher scatter jobs to always run on the IODispatcher thread. This can avoid deadlocks in cases where background tasks end up waiting on I/O and we don't have enough background task threads to fulfill decompression requests. This is off by default
[REVIEW] [at]pj.kack
#rb pj.kack, john.huelin
#tests tested locally, also perf tested via replayrun exe override preflight in horde


#localization none
#preferred_allowlister john.huelin

[CL 29685404 by ben woodhouse in ue5-main branch]
2023-11-13 11:22:42 -05:00
brandon schaefer
42be2305a1 AutoRTFM some missing modules
#rb none
[FYI] Michael.Nicolella

[CL 28804212 by brandon schaefer in ue5-main branch]
2023-10-16 13:03:05 -04:00
andriy tylychko
d938d346bd fixed crash in AsyncFileHandle with unimplemented EnsureCompletion()
#jira UE-195894
#rb danny.couture, francis.hurteau

[CL 28313586 by andriy tylychko in ue5-main branch]
2023-09-28 07:09:26 -04:00
nick edwards
220ccc4b3e FIoDirectoryIndexReader::IterateDirectoryIndex: Use FStringViews and TStringBuilders instead of FStrings to avoid potentially unnecessary heap allocations
FPakPlatformFile::ForeachPackageInIostoreWhile: Update usage of IterateDirectoryIndex, and use overload of TryConvertFilenameToLongPackageName using string views and builders to avoid allocations

#rb elias.lozadabenavent
#rb anton.dunchev

[CL 28282945 by nick edwards in ue5-main branch]
2023-09-27 14:10:02 -04:00
justin marcus
895bb59e4d GFP state machine can now detect when its possible to force monolithic shader library loading which is faster if we know we don't need to search for chunked shader libraries.
- Can be disabled with CVarAllowForceMonolithicShaderLibrary.
- FGameFeaturePreMountingContext can disable shader library loading in cases where we may want to control it externally.
- Install bundle manager now tracks if a bundle contains chunks
- GetPakchunkIndexFromPakFile now uses string views and string builders instead of temporary strings
- GetPakchunkIndexFromPakFile is no longer duplicated in IPlatformFilePak
- FPakPlatformFile::HandleMountPakDelegate no longer does a linear search to find the just mounted pak file


[REVIEW] [at]Dave.Belanger [at]Thomas.Ross [at]Bob.Tellez

[CL 28049947 by justin marcus in ue5-main branch]
2023-09-20 15:11:58 -04:00
matt peters
2d8cad97a6 PakFiles and FileManager: Add IPlatformFile::FDirectoryVisitor::ShouldVisitLeafPath for directory visitors that are ignoring some files, so that FPakFile::ValidateDirectorySearch knows that invalid-to-request files were not requested despite being present in the searched directories.
#rnx
#rb Zousar.Shaker

[CL 28012483 by matt peters in ue5-main branch]
2023-09-19 16:51:05 -04:00
matt peters
cca6524868 PlatformFilePak: Move IPlatformFile directory API functions into cpp file for readability and compile time improvements. Remove functions deprectated on or before 4.27.
#rb None, trivial
#rnx

[CL 27971653 by matt peters in ue5-main branch]
2023-09-18 15:54:58 -04:00
matt peters
0538198ab4 PakFiles: Downgrade the Warning: MissingPrunedPakFile from error to warning until we implement a fix for the spurious instances of the error.
#rnx
#rb None, trivial

[CL 27935012 by matt peters in ue5-main branch]
2023-09-15 17:31:46 -04:00
Matt Peters
e69f086889 CookOnTheFly2: Remove duplicate warnings for missing packages requested multiple times, and remove warnings for editor-only packages that are found due to unsolicited loads on the cooker but were not requested by the client. Add packagename to warnings about missing packages.
#jira UE-184879
#rnx
#rb Dan.Englebrecht

[CL 27593637 by Matt Peters in ue5-main branch]
2023-09-05 08:41:53 -04:00
david harvey
35c367d801 Centralize ENABLE_PLATFORM_CHUNK_INSTALL declarations into GenericPlatformChunkInstall.h
#rnx
#rb trivial

[CL 27480709 by david harvey in ue5-main branch]
2023-08-30 06:36:54 -04:00