Commit Graph

236 Commits

Author SHA1 Message Date
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
eddf953912 IoStore: Fix compile error due to interface change coming from cl 24117138
#rb trivial
#preflight skip

[CL 24119002 by pj kack in ue5-main branch]
2023-02-10 10:15:25 -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
dan thompson
c979e76663 Instead of rehashing the package name every time in sort fns, save it off.
#rb pj.kack
#preflight 63e2c796b923ed4bdd24cae0

[CL 24066995 by dan thompson in ue5-main branch]
2023-02-08 00:25:34 -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
Matt Peters
fa59e5fba4 MPCook: ZenStoreWriter: Replicate ZenStoreWriter artifacts data.
#rnx
#rb Zousar.Shaker
#preflight 63dd7dd85c0ce8f11b71f405

[CL 23999102 by Matt Peters in ue5-main branch]
2023-02-03 17:38:06 -05:00
Matt Peters
44da5e8ca2 MPCook: Allow Cook::IMPCollectors to also append messages onto demoted (failed cook) packages. The PackageManifest has an entry for non-cooked packages.
Downgrade failed to respond to retraction request message to Display. It can occur when the CookWorker is busy with long package loads due to huge maps.
Remove TODO comments that are now TODONE.
#rb Zousar.Shaker
#rnx
#preflight 63dac5d3dd0298377615823f

[CL 23969953 by Matt Peters in ue5-main branch]
2023-02-02 12:00:44 -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
pj kack
d3da578b56 ZenCook: Add async write of additional files like .ufont to the sandbox directory before compressing for Zen.
Fix problem of missing additional files in .pak files when packaging based on a ZenCook.

#jira UE-175144
#rb carlmagnus.nordin,per.larsson,zousar.shaker
#rnx
#preflight 63d92560f626715201d687ce

[CL 23945129 by pj kack in ue5-main branch]
2023-02-01 03:19:39 -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
carlmagnus nordin
9f028b8744 ZenCook: Remove unused fields "guid" and "disksize" from oplog
#preflight 63d8ede38505ea6b1f7e96b6
#rb per.larsson

[CL 23927486 by carlmagnus nordin in ue5-main branch]
2023-01-31 10:39:54 -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
dan engelbrecht
ef3ca249bb Fix usage of FWindowsPlatformProcess in 23917462
#rb none
#preflight none

[CL 23917728 by dan engelbrecht in ue5-main branch]
2023-01-30 17:50:16 -05:00
dan engelbrecht
eccdbbbd02 Make attachment names written as temp-files in ZenStoreHttpClient uses a per-process unique salt
#rb zousar.shaker matt.peters
#preflight 63d7e0e7d21dbe1d29486735

[CL 23917462 by dan engelbrecht in ue5-main branch]
2023-01-30 17:38:18 -05:00
matt peters
be7c2ed46c PackageStoreManifest: Fix compile error on older compilers that do not allow constexpr variables to be captured by default.
#rb None, trivial
#rnx
#preflight None, buildbreak fix

[CL 23901214 by matt peters in ue5-main branch]
2023-01-29 15:20:26 -05:00
Matt Peters
200f98dd5f MPCook: Sort the output of IoStore PackageStoreManifest when writing to disk to make it deterministic.
#rnx
#rb Zousar.Shaker
#preflight 63d6b9b15354589b5c9b1668

[CL 23900962 by Matt Peters in ue5-main branch]
2023-01-29 13:46:27 -05:00
Matt Peters
5d2f838486 Cooker: MPCook: Replicate package hashes in LooseCookedPackageWriter.
#rb Zousar.Shaker
#rnx
#preflight 63d431bc5428dc67b168e481

[CL 23899261 by Matt Peters in ue5-main branch]
2023-01-28 14:33:10 -05:00