Commit Graph

176 Commits

Author SHA1 Message Date
per larsson
7b3a9ed322 I/O - extended ondemand I/O store writer to output compressed and encrypted chunks
- renabled the ondemand PAK rule that was previously removed
- enabled handling more than one ondemand containe
- added ondemand I/O store TOC
- added support for serializing ondemand TOC's to CbObjet

#rb Martin.Ridgers
#preflight 6436cbf80c19befb6c8ee4cc

[CL 25025449 by per larsson in ue5-main branch]
2023-04-13 10:51:22 -04:00
carlmagnus nordin
ecfc01c258 ZenLoader: Include preload dependencies in package headers instead of relying on predetermined export bundle dependencies. This means that each package can be treated in isolation when staging. Also removes the need to keep track of export and bundle counts in the package store which saves some memory.
#preflight 642e8838441e8b2f5506dbb4
#rb pk.kack,per.larsson,francis.hurteau

[CL 24944233 by carlmagnus nordin in ue5-main branch]
2023-04-06 10:50:30 -04:00
robert millar
b6a3569cad Always emit text to verify cross container refs output even if there are no problems.
#rb none

[CL 24915555 by robert millar in ue5-main branch]
2023-04-04 15:07:31 -04:00
carlmagnus nordin
024df6d65c ZenCook: Added support for file regions
#preflight 64269c8491589478cdeb2a6f
#rb pj.kack
#rnx

[CL 24869761 by carlmagnus nordin in ue5-main branch]
2023-03-31 08:36:14 -04:00
carlmagnus nordin
f663db1c30 IoStore/ZenLoader: Some cleanup to facilitate future changes
#preflight 6423d8b2973e60967061727a
#rb pj.kack
#rnx

[CL 24832834 by carlmagnus nordin in ue5-main branch]
2023-03-29 04:40:20 -04:00
carlmagnus nordin
58b7c9404b IoStore: Refactor to prepare for staging without a global optimization pass
* Moved package redirection out of the package store optimizer
* Moved iocontainer header creation out of the package store optimizer
* Moved package load order sorting out of the package store optimizer

#preflight 641d8dab803cb466e83a05dc
#rb pj.kack
#rnx

[CL 24778887 by carlmagnus nordin in ue5-main branch]
2023-03-24 10:06:23 -04:00
nick edwards
2d6a7165c4 Fix C++20 compile error. FContainerPackageInfo can no longer be aggregate initialized in C++20.
#preflight 6418431d42618c85c474ce2f
#rb none
#jira none

[CL 24719434 by nick edwards in ue5-main branch]
2023-03-20 13:30:56 -04:00
carlmagnus nordin
30c0f28fc0 ZenCook: Merge the oplog and package store manifest. Write an oplog instead of a package store manifest when cooking to loose files and read the oplog instead of the package store manifest to find cooked files in UAT when staging from Zen.
#rb per.larsson
#preflight 640efc9bc41a0a2a7799d470
#rnx

[CL 24632735 by carlmagnus nordin in ue5-main branch]
2023-03-14 06:43:23 -04:00
robert millar
e518cdb70a Mode in iostore utilities to check for invalid cross-container references.
#rb per.larsson

[CL 24586917 by robert millar in ue5-main branch]
2023-03-09 21:01:52 -05:00
carlmagnus nordin
641eb5b626 ZenCook: Added support for optional package segments
#jira UE-148021
#preflight 63f365ace832ea950a6217e4
#rb per.larsson

[CL 24343344 by carlmagnus nordin in ue5-main branch]
2023-02-21 13:03:12 -05:00
dan thompson
be5ab6f32e Missing asset registry is a display now so we don't get warning spam when we know it's missing.
#rb none
[FYI] Wessam.Ibrahim
#preflight none

[CL 24331740 by dan thompson in ue5-main branch]
2023-02-20 20:22:11 -05:00
matt peters
aa454dc761 Cooker: Iterative Cook and WorldPartition:
Extend CookPackageSplitter API to have the splitter specify Dependency categories and properties, and to specify a GenerationHash that can invalidate a generated package due to changes in the generator without requiring a change in the the dependencies.
Extend WorldPartitionSplitterto specify the dependencies for its generated pacakges.
Update Cooker to track in the cooked AssetRegistry the ExternalActor packages that are dependencies for WorldPartition maps.
#rb Zousar.Shaker, Richard.Malo
#rnx
#preflight 63ee953a90198dffba920ab7

[CL 24273652 by matt peters in ue5-main branch]
2023-02-16 19:29:56 -05:00
dan thompson
c0c06db0d5 Adding a bunch of iostore/unrealpak performance stats and fixing a merge error with the reference db on optional containers.
#rb matt.peters
#preflight 63ea85f8ff4fbdc05c00d07e

[CL 24197489 by dan thompson in ue5-main branch]
2023-02-13 20:09:46 -05:00
pj kack
eb2c730a89 UnrealPak: Add -csv parameter to create pak and create ucas commands to list all the chunks.
Output is the same as when executing the -list command separately.
Running with -csv=<dir> will create one <pakchunkfilename>.pak.csv file per generated pak and one <pakchunkfilename>.utoc.csv file per generated container.
Running with -csv=<file> will create one single <file>.pak.csv for all paks and one <file>.utoc.csv for all containers.

Details:
The container output (the big set of data) is generated based on in-memory writer TOC data once the IoStoreWriters have been finalized.
The pak output (smaller set of data) is generated using the existing list command and loads the newly generated files from disk.
Cleanup the remains of three obsolete csv output features for containers (-csvoutput, -writefinalorder and OUTPUT_CHUNKID_DIRECTORY).
Optimize container output generation by extending FIoStoreTocChunkInfo with OffsetOnDisk and NumCompressedBlocks filled directly by EnumerateChunks.
Add a ChunkIdToFileNameMap to FCookedPackageStore.
Use the FCookedPackageStore to output the actual package ids and package names (this is currently broken when running -list as a separate command).

#rb carlmagnus.nordin
#rnx
#preflight 63e5eacb98775169f8dea431

[CL 24118941 by pj kack in ue5-main branch]
2023-02-10 10:13:22 -05:00
dan thompson
5e26b56715 Fix for parsing validate flag.
Set the reference chunk db on the optional writers.
Disable reference chunk use for uncompressed chunks.
Failing to load the reference chunk db is now a warning rather than a failure, since pak can succeed without it.
#rb none
#preflight 63e434bf7467a6960f7d31db

[CL 24110712 by dan thompson in ue5-main branch]
2023-02-09 19:38:49 -05:00
per larsson
373dd67228 Ondemand PakFile rules
This change adds support for defining ondemand pak file rule(s). These rules
overrides existing rules created from asset chunking and is currenlty only meant to be used for .ubulk/.uptnl files.
Ondemand content is serialized to loose files with a new I/O store writer to /MyGame/ContentOnDemand/Paks/{MyPakRuleName}.

#rb CarlMagnus.Nordin,PJ.Kack
#preflight 63e39130786751d1e010c14c
#rnx

[CL 24096114 by per larsson in ue5-main branch]
2023-02-09 08:21:15 -05:00
dan thompson
4a6b8c8b00 Removal of the r.Shaders.CompressionFormat CVar, and shader group compression during UnrealPak now inherits the packaging compresison level.
Due to the fact that UnrealPak doesn't load INIs, the cvar was always its default value. This, combined with the fact that shaders don't store what codec they are compressed with means that setting this cvar to anything other than default (oodle) causes a crash in UnrealPak as DecompressShader will try to decompress with Oodle independent of the actual codec. Rather than plumb this information down through ProjectParams, I felt it prudent to just always use Oodle.

Additionally, in order to facilitate faster iteration times for development build farm jobs, the shader compression level used during UnrealPak will inherit from the overall package compression level set via Project Settings (PackageCompressionLevel_*).

This tacitly avoids patch issues as the default shader compression level happens to be the default package compression level, except now it inherits any faster levels for iteration time.

Note that we still use Mermaid as the codec as it's faster for decompressing than Kraken, which we care about for shaders.

#rb Fabian.Giesen
#rb Arciel.Rekman
#preflight 63e2f94c786751d1e0ffb290

[CL 24092953 by dan thompson in ue5-main branch]
2023-02-09 00:35:55 -05:00
carlmagnus nordin
fbfd0703f0 IoStore:
* Fixed inderministic sort order for shaders of the same size, leading to different shader group chunks being generated
* Fixed memory leak when generating shader groups
* Fixed indeterministic classification of shaders appearing in two shader maps with the same hash
#rb pj.kack
#preflight 63e36695797b029c0a96297d

[CL 24070666 by carlmagnus nordin in ue5-main branch]
2023-02-08 06:20:22 -05:00
pj kack
c1dfe83c61 UnrealPak: Add more fine grained trace cpu scopes for profiling on remote machines.
#rb trivial
#rnx
#preflight 63e10793b923ed4bddea469f

[CL 24031827 by pj kack in ue5-main branch]
2023-02-06 11:39:10 -05:00
charles bloom
22ba715923 iostore -list -csv commandlet can take a dir for csv argument and write one csv file per container
#rb robert.millar
#preflight https://horde.devtools.epicgames.com/job/63dae7108c7003aa8cc27663

[CL 23961652 by charles bloom in ue5-main branch]
2023-02-01 19:45:05 -05:00
pj kack
5450132470 UnrealPak: Improve diffutils
Add support for diffing pak directories for pak diff.
Add support for different cryptokeys for pak diff and legacy iostore diff.

#jira UE-175144
#rb carlmagnus.nordin
#rnx
#preflight 63d9259e7a39a18021d4f997

[CL 23945218 by pj kack in ue5-main branch]
2023-02-01 03:39:07 -05:00
carlmagnus nordin
be6dcbc558 IoStore:
Remove the requirement to resolve full export names when staging from Zen
#preflight 63d8efe9f626715201ca47d1
#rb pj.kack

[CL 23927635 by carlmagnus nordin in ue5-main branch]
2023-01-31 10:47:12 -05:00
martins mozeiko
dddf036247 Reduce amount of malloc calls during pak creation
1) Move few containers outside of inner loop to reuse same memory across iterations in AssignPackagesDiskOrder
2) Change FString to FStringView when list of filenames is prepared during FIoStoreWriter::Finalize

#rb fabian.giesen
#preflight 63d826653656ea96dc1fabfe

[CL 23923937 by martins mozeiko in ue5-main branch]
2023-01-31 01:26:03 -05:00
Matt Peters
178d5856dc MPCook - PackageWriter and IOStore API changes to support MPCook.
Add FCookInfo argument to BeginCook and EndCook, the same data passed to initialize. It is provided in Begin/End as well since Writers need to consider it for Begin/End actions.
Add WriteMPCookMessageForPackage/TryReadMPCookMessageForPackage functions for replicating information from PackageWriters from CookWorker to CookDirector.
Add WritePackage/TryReadPackage to Manifest. Some extra information is collected when MPCook is active to support this replication.
Add CompactBinary serialization functions to FIoChunkId.
#rbx
#preflight 63d1c62a45795e7d5c164b0e

[CL 23872901 by Matt Peters in ue5-main branch]
2023-01-26 14:32:12 -05:00
dan thompson
4fbe8269cc Missing asset registry for hash database is now a warning, not an error.
#preflight 63d1bf21e55deff624b4f240

[CL 23864791 by dan thompson in ue5-main branch]
2023-01-26 02:26:14 -05:00