158 Commits

Author SHA1 Message Date
anderson ramos
a8e1ce31a5 Download throughput calculation engine side
Implemented independent logic for each platform Android and iOS
No platforms were affected besides the target ones

#rb Peter.Sauerbrei

[CL 35630820 by anderson ramos in ue5-main branch]
2024-08-19 13:10:01 -04:00
justin marcus
3ec772ccd9 FInstallBundleCombinedProgressTracker
- Minor cleanup to make logic that determines bAreAllBundlesZeroWeight more clear

[CL 35406948 by justin marcus in ue5-main branch]
2024-08-08 16:23:23 -04:00
dan thompson
b443ceb08a Use the new "MaxDiskSpaceRequiredIfDeleteDuring" bundle ini setting for installs requiring less free drive space.
#rb adam.kinge, Justin.Marcus

#ushell-cherrypick of 35114130 by swarm

#rnx

[CL 35152238 by dan thompson in ue5-main branch]
2024-07-29 16:50:35 -04:00
florin pascu
4f450dee47 Add metallibs paths to NonUFSShaderLibPaths for UEFN
remove Platform_IOS hardcode and drive the  NonUFSShaderLibPaths using ini's.
To add an extension whose path will be added to NonUFSShaderLibPaths you now have ExtensionList in the section InstallBundleManager.Shaderlib of the InstalledBundle ini


#rb carl.lloyd, Graeme.Thornton, Justin.Marcus

[CL 35018639 by florin pascu in ue5-main branch]
2024-07-23 10:29:16 -04:00
dmytro ivanov
75031badfc Add debug UI to FN preload screen on iOS, enable it by tapping 4 fingers on the screen
#rb denys.mentiei

[CL 34678289 by dmytro ivanov in ue5-main branch]
2024-06-26 11:53:49 -04:00
justin marcus
90ac33eeb5 Use IAD tagsets instead of individual asset references to support partial GFP install.
Also fix some FOnDemandIoStore issues
- Support FOnDemandToc being loaded by game code
- Some support for OnDemandIoStore cache directory having different names depending on target - still needs more work to support forking servers.
- Fix BuildInstallData not returning missing packages
- Make sure BuildInstallData installs always downloaded chunks for a container without any packages (not sure this can actually occur)
- Disable pak mount callbacks - these don't work right and causes errors without global HTTP endpoint configured.
- Fix FOnDemandIoStore not being created without a global HTTP endpoint configured.




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

#rb Per.Larsson

[CL 34122045 by justin marcus in ue5-main branch]
2024-06-05 09:15:42 -04:00
justin marcus
82470dfb40 Fix call to release content on a install bundle source not occuring if the bundle was unmounted but not fully released.
Allow bundle sources to add additional bundles to be canceled when they get a cancel request.  This is useful if the source has internal dependencies between bundles.


[REVIEW] [at]Daniel.Lamb

[CL 34105889 by justin marcus in ue5-main branch]
2024-06-04 16:35:54 -04:00
dmytro ivanov
14cbd07409 Refactored iOS background downloading stack
#rb Rafa.Lecina, adam.kinge

[CL 33924604 by dmytro ivanov in ue5-main branch]
2024-05-27 11:24:02 -04:00
justin marcus
87d189958a Fix GFPs using InstallBundle protocol releasing pinned content too early
- Add EInstallBundleReleaseRequestFlags::SkipReleaseUnmountOnly
- Update relevant analytics
- only trigger ensure about -UsePaks if Paks will actually be mounted


[REVIEW] [at]Daniel.Lamb [at]Will.Brown

[CL 33034298 by justin marcus in ue5-main branch]
2024-04-17 09:25:48 -04:00
justin marcus
4cc513a334 Add EInstallBundleResult::MetadataError
[REVIEW] [at]Daniel.Lamb [at]Per.Larsson

[CL 32917379 by justin marcus in ue5-main branch]
2024-04-11 20:06:04 -04:00
justin marcus
91569c132c Add a version of StartInstallBundleAsyncIOTask that uses FAutoDeleteInstallBundleTask. This version does not support passing a game thread callback and does not require the Start/Finish functions to update it.
[REVIEW] [at]Daniel.Lamb [at]Per.Larsson

[CL 32802776 by justin marcus in ue5-main branch]
2024-04-08 15:34:24 -04:00
justin marcus
f2fe22a517 Deprecate EInstallBundleSourceType and replace with FInstallBundleSourceType
- FInstallBundleSourceType is extensible by game code.  Possible values are automatically gathered from config
- Add a utility function to read configured bundle sources
- Fixes for enum functions in InstallBundleUtil to better support deprecated enums on clang


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

[CL 32390707 by justin marcus in ue5-main branch]
2024-03-20 21:48:59 -04: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
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
justin marcus
f4aa2581a8 Install Bundle cache now accounts for patching overhead
- Overhead is only applied to cache reserved bundles that need to be patched
- Overhead becomes 0 after they are updated
- Add overhead size to cache stats
- Add some missing FStringView versions of BPS manifest functions
- Fix some BPS manifest functions that weren't being mocked

#rb Daniel.Lamb
review-30046427 [at]Daniel.Lamb

[CL 30128923 by justin marcus in ue5-main branch]
2023-12-05 14:23:19 -05:00
justin marcus
a323f3c0fb GFP Predownload Support
- This doesn't instatiate a GFP state machine and doesn't leave install bundles in a reserved cache state when it finishes.  This makes ideal to use in situations where a download cache pre-warm is desired but actual GFP creation should be deffered.
- Fix install bundle manager issue that could cause bundles that skipped mounting to not be properly released to the install bundle cache.

[REVIEW] [at]Daniel.Lamb [at]Mitchell.Fisher
#rb Daniel.Lamb

[CL 29388041 by justin marcus in ue5-main branch]
2023-11-02 19:26:08 -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
dave belanger
b8eb668129 IInstallBundleManager method to change a bundle cache size which overrides ini settings but not the command line arg (for now it doesn't support changing it after the bundles have been initialized)
#rb Justin.Marcus

[CL 27565186 by dave belanger in ue5-main branch]
2023-09-01 16:17:16 -04:00
justin marcus
a898b12bea Engine changes for GFP download throuput optimization.
GFP state machine
- Avoid async GetContentState calls if possible.  These waste time and delay getting initial HTTP requests queued. The allows all the requests to be queued on the same tick.

BPS download service
- Move HTTP callbacks off game thread. This doesn't have much effect yet since the download service is still ticked on the game thread.  I'll follow this up with changes to fix that.

Install bundle stats
- Additional ensures to help catch operations happening out of order. I caught and fixed an issue where VK bundle source was sending completion callbacks too early.

[REVIEW] [at]Daniel.Lamb [at]Mitchel.Fisher [at]Leigh.Swift

[CL 27317611 by justin marcus in ue5-main branch]
2023-08-23 15:48:50 -04:00
justin marcus
badd89260b Follow up for Eric's fix
- Capture by ref, not value
- Also update bulk source

[FYI] Eric.Knapik

[CL 26993454 by justin marcus in ue5-main branch]
2023-08-10 11:22:54 -04:00
eric knapik
3650e52a34 #jira: FORT-636450
Fixup the install bundle to use the right config for bundle sorting

[FYI] Justin.Marcus

[CL 26976527 by eric knapik in ue5-main branch]
2023-08-09 18:26:57 -04:00
david harvey
0d70ab42a7 Platform chunk install bundle wrapper can use PlatformChunkName property to override the named chunk that a bundle will use.
- useful on platforms that do not support a lot of named chunks, allowing multple bundles to reference the same named chunk.
 - also allows XYZOptional bundles to work again, linking them to their main XYZ bundle state on platforms they're not supported on.

#jira UE-146398
#rnx
#rb Justin.Marcus

[CL 26770845 by david harvey in ue5-main branch]
2023-08-02 10:10:48 -04:00
eric knapik
9754b829b5 Added ability for GameFeatureData to check for a Bundle based on the GFP name:
GetInstallBundleName

#jira: FORT-619249, FORT-619250
[REVIEW] [at]Graeme.Thornton [at]Justin.Marcus [at]Mitchell.Fisher [at]Daniel.Lamb

[CL 26686842 by eric knapik in ue5-main branch]
2023-07-28 16:35:51 -04:00
henrik karlsson
5db685f97d [Engine]
* Moved dllexport from type to methods/staticvar in all Engine runtime code. This improves compile times, memory and performance in dll builds

[CL 26082269 by henrik karlsson in ue5-main branch]
2023-06-17 18:13:06 -04:00
justin marcus
d2d11d6a7b Refactor bundle regex matching into shared utility functions.
[FYI] Graeme.Thornton, Mitchell.Fisher, Daniel.Lamb
#rb David.Harvey

[CL 25873139 by justin marcus in ue5-main branch]
2023-06-08 11:51:07 -04:00