Commit Graph

256 Commits

Author SHA1 Message Date
justin marcus
b1da5334d9 Resubmitting with fixes for trying to download IAS container headers without the full URL.
[Backout] - CL35142912
[FYI] justin.marcus
Original CL Desc
-----------------------------------------------------------------
[Backout] - CL35118704
[FYI] Justin.Marcus
Original CL Desc
-----------------------------------------------------------------
OnDemandIoStore
- Header chunks are now downloaded during mount
- Mount requests will now fail with PendingEncryptionKey if no encryption key is found, but containers will still be created and will mount when keys become availble.
- If encryption keys aren't available, the encoded header is stored until they become available
- Install requests are no longer deferred until encryption keys are available, they will fail with UnknownChunkID or PendingEncryptionKey
- Fully implemented GetInstallSize() and fixed thread safety issues


[REVIEW] [at]Per.Larsson [at]Daniel.Lamb

[CL 35147603 by justin marcus in ue5-main branch]
2024-07-29 14:58:54 -04:00
justin marcus
799dafe7bf [Backout] - CL35118704
[FYI] Justin.Marcus
Original CL Desc
-----------------------------------------------------------------
OnDemandIoStore
- Header chunks are now downloaded during mount
- Mount requests will now fail with PendingEncryptionKey if no encryption key is found, but containers will still be created and will mount when keys become availble.
- If encryption keys aren't available, the encoded header is stored until they become available
- Install requests are no longer deferred until encryption keys are available, they will fail with UnknownChunkID or PendingEncryptionKey
- Fully implemented GetInstallSize() and fixed thread safety issues


[REVIEW] [at]Per.Larsson [at]Daniel.Lamb

[CL 35142928 by justin marcus in ue5-main branch]
2024-07-29 12:14:58 -04:00
justin marcus
efdb5a3c33 OnDemandIoStore
- Header chunks are now downloaded during mount
- Mount requests will now fail with PendingEncryptionKey if no encryption key is found, but containers will still be created and will mount when keys become availble.
- If encryption keys aren't available, the encoded header is stored until they become available
- Install requests are no longer deferred until encryption keys are available, they will fail with UnknownChunkID or PendingEncryptionKey
- Fully implemented GetInstallSize() and fixed thread safety issues


[REVIEW] [at]Per.Larsson [at]Daniel.Lamb

[CL 35118714 by justin marcus in ue5-main branch]
2024-07-26 16:16:49 -04:00
pj kack
c7e041ef02 FPackageId: Deprecate and replace ValueForDebugging with LexToString.
#rb per.larsson
#rnx

[CL 34702722 by pj kack in ue5-main branch]
2024-06-27 04:15:42 -04:00
nick edwards
43a7f0c49a FPackageId: Add SerializeForLog function.
#rb danny.couture

[CL 34670447 by nick edwards in ue5-main branch]
2024-06-26 05:40:44 -04:00
justin marcus
34ccf9bbe2 Forked Server support for IAD cache
[REVIEW] [at]Daniel.Lamb [at]Per.Larsson
#rb Per.Larsson

[CL 34532940 by justin marcus in ue5-main branch]
2024-06-20 12:20:37 -04:00
per larsson
129585ee43 Added option -CookSoftPackageReferences to save soft package references when cooking
#rb Matt.Peters, Paul.Chipchase
#rnx

[CL 34503130 by per larsson in ue5-main branch]
2024-06-19 12:16:51 -04:00
ben woodhouse
2ea61ce0c6 Switch to CSV_PROFILER_STATS instead of CSV_PROFILER for various profiling subsystems. This allows them to be compiled out when CSV_PROFILER_MINIMAL is defined.
As part of this change we also promote dynamic resolution and IO/PackageQueueDepth stats to Minimal since they're important for high level performance reporting.
Also fix up a few places that were redundantly using #if CSV_PROFILER around CSV macros.

#rb mickael.gilabert

[CL 34386798 by ben woodhouse in ue5-main branch]
2024-06-14 18:16:47 -04:00
danny couture
6345bd8b29 [TaskGraph/Misc]
- Replace BusyWait API calls to simple Wait

#rnx
#rb kevin.macaulayvacher

[CL 34315066 by danny couture in ue5-main branch]
2024-06-12 13:56:22 -04:00
danny couture
25949bba58 [IoStore]
- Properly chain decompression prerequisites so everything can be retracted

#rb PJ.Kack

[CL 33691941 by danny couture in ue5-main branch]
2024-05-16 13:00:35 -04:00
per larsson
f759fced97 Support serialize container ID to CbObject
#rb Paul.Chipchase

[CL 33602142 by per larsson in ue5-main branch]
2024-05-13 08:27:54 -04:00
justin marcus
09707ffec4 Add dummy utoc files after IAD plugin chunking to make pak mounting happy.
[REVIEW] [at]Per.Larsson [at]Daniel.Lamb

[CL 33461902 by justin marcus in ue5-main branch]
2024-05-06 13:23:10 -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
per larsson
b8ea71cdcd Create container chunk ID from container ID
#rb Paul.Chipchase

[CL 33067825 by per larsson in ue5-main branch]
2024-04-18 06:56:54 -04:00
pj kack
a895984492 UnrealPak: Hash logic cleanup.
Deprecate the 32 byte FIoChunkHash (filled with 12 zero bytes) and replace it with the 20 byte FIoHash.
Remove IIoStoreWriterHashDatabase and merge AssetRegistry hashes and Zen ChunkInfo hashes into FCookedPackageStore.
Use Zen chunkinfo hashes for package and bulk data when paking from a Zen cook (package buffers are immutable).
Use AssetRegistry hashes for bulk data when paking from a loose file cook (package buffers are transformed).
Add IIoStoreWriteRequest::GetChunkHash to access the chunk hash from the cook.
Rename the argument -verifyhashdatabase to -validatechunkhashes.

Minor:
Calculate CompressionMethodForEntry once for each FIoStoreWriteQueueEntry.
Add trace cpu scopes for scheduler threads.
In FCookedPackageStore remove unused functions and optimize oplog parsing and GetChunkInfoFromFileName.

Tests:
Paking with -validatechunkhashes from a loose file cook with/without RefDB.
Paking with -validatechunkhashes from a Zen cook with/without RefDB.
Running UnrealPak "<ucas> -extract", "-list=<ucas>" and "iostore -list=<ucas>" commands on old containers serialized with FIoChunkHash in FIoStoreTocResource::ChunkMetas.

#jira UE-185354,UE-202679
#rb Per.Larsson

[CL 33032419 by pj kack in ue5-main branch]
2024-04-17 07:02:04 -04:00
jian ru
f0d07015af Properly complete unresolved I/O requests
#rb per.larsson

[CL 33007956 by jian ru in ue5-main branch]
2024-04-16 14:09:09 -04:00
pj kack
4161e66f68 Move all IoStoreWriter code (writing of .utoc/.ucas containers) out from Core into IoStoreUtilities.
Break cyclic dependency on DerivedDataCache module to utilize DDC2 API to cache compressed chunks.
The declarations moved from the public header are considered private and are not really usable outside of the IoStoreUtilities/UnrealPak context.

#rb per.larsson
#rnx
#tests BuildCookRun Lyra with pak/container files

[CL 31986007 by pj kack in ue5-main branch]
2024-03-04 07:47:44 -05:00
paul chipchase
f0805a8dda Remove the additional metadata added in CL 28039514 from the IoStoreToc.
#rb Per.Larsson
#jira UE-189912
#rnx

- The metadata was originally added so that we could generate a toc for OnDemand streaming data if needed at runtime, but we no longer have any plans to support this functionality so we can remove it.
- The change still allows .utoc files that contain the additional metadata to be read. Since the data was at the end of the structure we can just ignore it and the code does not need to consider it's existence.
- Strictly speaking there was no need to add a new entry to EIoStoreTocVersion but we have chosen to do so on the off chance that we need to identify .utoc files that were created while this code was active, for what ever reason.

[CL 31938508 by paul chipchase in ue5-main branch]
2024-03-01 03:41:44 -05:00
pj kack
d1e6599753 IoStore: Move FIoStoreToc::GetTocChunkInfo to FIoStoreTocResource::GetTocChunkInfo and split the concerns of FIoStoreToc into FIoStoreTocBuilder and FIoStoreTocReader.
Prepare for moving IoStoreWriter out of Core to IoStoreUtilities.

#rb per.larsson
#rnx
#tests Packaging and running cooked LyraGame

[CL 31801867 by pj kack in ue5-main branch]
2024-02-26 09:00:04 -05: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
kevin macaulayvacher
8a51319dfe DoesPackageExist AssetRegistry optimization: Re-enables optimization to avoid scanning on disk for corrected casing for FNames by changing the check to determine when the IoDispatcher is in use.
We expose the previously private, and unused HasScriptObjectsChunk method to the IODispatcher, as multiple codepaths are relying on this path to determine if the IoDispatcher is being used at runtime to load from chunks.

#jira UE-206417
#rb Per.Larsson
[FYI] Francis.Hurteau

[CL 31615213 by kevin macaulayvacher in ue5-main branch]
2024-02-19 12:40:05 -05:00
dan thompson
15fd28a21e Reference Chunk Database:
* Optionally output a CSV of changed/new packages.
* Add an additional directory input if containers get separated off during a build process
* Catch optional segment containers and patch up the container id per the id fix in a separate CL.
bunch of different preflights due to CIS issues.
#rb fabian.giesen
#jira UE-172130

[CL 31576665 by dan thompson in ue5-main branch]
2024-02-16 15:10:30 -05:00
dan thompson
ef9ccefa8f Updating optional segment iostore containers to have a unique container id instead of reusing their base container's id. This time to verify I removed the FIoContainerId struct _entirely_ from the codebase to make sure I caught all use cases, and kicked the relevant build that failed.
#rb Per.Larsson

[CL 31541486 by dan thompson in ue5-main branch]
2024-02-15 18:04: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
graeme thornton
8e2da03811 [Backout] - CL31362445
[FYI] dan.thompson
Original CL Desc
-----------------------------------------------------------------
Updating optional segment iostore containers to have a unique container id instead of reusing their base container's id. The container ID is only used to load the container's header chunk and otherwise is only used for informative purposes (and the ref cache db.._ and so this will not affect the ability to load optional segment containers in a cooked editor.
#rb Francis.Hurteau

[CL 31379180 by graeme thornton in ue5-main branch]
2024-02-12 08:12:49 -05:00