Commit Graph

6887 Commits

Author SHA1 Message Date
paul chipchase
fc827406e2 Add a number of ways for the VA system to be changed to lazy initialize on first use.
#rb Per.Larsson
#jira UE-161296
#rnx
#preflight 62fe3ce73d3fb466b229bcc0

- There are some usecases that require the VA system to initialize the first time it is accessed (usually the first time we attempt to pull a virtualized payload) rather than be initialized in the program start up. This change provides three different methods to achieve this:
-- Setting the define 'UE_VIRTUALIZATION_SYSTEM_LAZY_INIT' to 1 in a programs .target.cs
-- Setting [Core.ContentVirtualization]LazyInit=true in the Engine ini file
-- Running with the commandline option -VA-LazyInit

- If we detect that the source control backend is being initialized on a background thread we do not try to run the FConnect operation. The backend will still work but this does reduce the potential error checking on initialization. This is done because the FConnect operation currently only works on the main thread and to change this would be a bigger work item than we can schedule at the moment.
- UE::Virtualization::Initialize functions now take a EInitializationFlags enum as a parameter. This enum allows the call to ignore all lazy init settings and force the initialization immediately. This is useful for programs like the Virtualization standalone tool which just needs to start the system when needed.
-- The call to ::Initialize in LaunchEngineLoop passes in None and does not ignore lazy initialization.
-- Calls to ::Initialize in the UnrealVirtualizationTool however all use EInitializationFlags::ForceInitialize and ignore lazy initialization settings.
- Fixed an odd bug in UE::Virtualization::Initialize where the error path (if the config file cannot be found) was using a different start up code path.
- Add asserts when assigning to GVirtualizationSystem to make sure that it is null. This is not 100% safe but should catch some potential threading issues, if any.
- Add an assert after lazy initialization (IVirtualizationSystem::Get) to make sure that GVirtualizationSystem was assigned a valid object.
- Improve how we check for legacy values in [Core.ContentVirtualization]. We now support multiple allowed values.
- Added a way to poll if a VA system has been initialize yet or not, this allows us to avoid initializing a VA system if one has not yet been created and we try to:
-- Dump VA profiling stats after cooking
-- Send VA stats to studio analytics
- Note that currently using lazy init loading will probably cause the VA statistics panel not to work, this will be fixed in future work where we will allow the panel to register for a callback when the system is initialized.

[CL 21467510 by paul chipchase in ue5-main branch]
2022-08-19 19:15:42 -04:00
vincent robert
f963160690 HeightField Raycast optimizatrion
Three level of walking raycast :
- Squared low level heightfield walking 6x6 resolution 36 cells checked
- Fast walking only on cells interescting the ray 2 cell length check (min 2, max 4)
- Slow walking one cell at the time
If the fast or the slow walking don't find intersection they go back to the low resolution height field walking
Additional memory for low resolution height field before this CL was 8% now it is 2x2.8 = 5.6% so 2.4% saved

#preflight 62fe64cd3f75602b2f06cab4

[CL 21455592 by vincent robert in ue5-main branch]
2022-08-19 07:28:07 -04:00
Zak Middleton
d4b40c56af #ue5 - Make generic UE::LWC::FloatToIntCastChecked() strict in the input and return types to require float input and int output.
#jira UE-161347
#rb Andrew.Davidson
#preflight 62fe8754890cc8db15513648

[CL 21447867 by Zak Middleton in ue5-main branch]
2022-08-18 15:07:48 -04:00
Per Larsson
459fb44b2f Bulk Data - deprecate StartAsyncLoading/CreateStreamingRequestForRange
#rb CarlMagnus.Nordin, Paul.Chipchase
#jira none
#preflight 62fdf44787319bacfb44bdcb

- deprecated and replaced the usage of StartAsyncLoading and CreateStreamingRequestForRange with a new batch API for requesting bulk data. The
new API fits better with the I/O dispatcher API and does not assume that the bulk data resides in the same I/O chunk. The new API also
removes state handling away from the bulk data instances.

[CL 21439218 by Per Larsson in ue5-main branch]
2022-08-18 04:46:58 -04:00
henrik karlsson
439153b3ad [Runtime]
* Fixed so UE_SCOPED_ENGINE_ACTIVITY works with empty variadic arguments

#rb self
#preflight trivial

#ROBOMERGE-AUTHOR: henrik.karlsson
#ROBOMERGE-SOURCE: CL 21432281 via CL 21437476 via CL 21437506 via CL 21437515
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v981-21435820)

[CL 21438209 by henrik karlsson in ue5-main branch]
2022-08-18 00:17:32 -04:00
henrik karlsson
aa00c8e9be [Core]
* Added macro to be used to place system trackedactivity scopes

#rb Devin.Doucette
#preflight 62f1f1e6d76ea4b503f96796

#ROBOMERGE-AUTHOR: henrik.karlsson
#ROBOMERGE-SOURCE: CL 21429953 via CL 21437440 via CL 21437482 via CL 21437494
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v981-21435820)

[CL 21438208 by henrik karlsson in ue5-main branch]
2022-08-18 00:17:26 -04:00
marc audy
a25c77c3cc Bring RES files in line with EM
#rnx

#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 21434216 in //UE5/Release-Engine-Staging/...
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v981-21435820)

[CL 21437233 by marc audy in ue5-main branch]
2022-08-17 21:56:00 -04:00
frederic brachfogel
7ddfe3c341 fix for Certain devices capped at lower FPS than supposed
[REVIEW] fourat.jellouli chris.babcock pete.sauerbrei


#ROBOMERGE-OWNER: frederic.brachfogel
#ROBOMERGE-AUTHOR: frederic.brachfogel
#ROBOMERGE-SOURCE: CL 21427202 via CL 21429126 via CL 21429286 via CL 21431383 via CL 21433736 via CL 21434075 via CL 21434129
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v981-21435820)

[CL 21436494 by frederic brachfogel in ue5-main branch]
2022-08-17 20:34:10 -04:00
Zak Middleton
dbff6d8dff #ue4 - Add UE::LWC::FloatToIntCastChecked<> for floating point to integer conversion. Accepts float/double input and requires template argument for return type (int32 and int64).
#jira none
#rb Andrew.Davidson
#fyi Andrew.Davidson
#preflight 62fd4028e64b1a510935e71c

[CL 21430469 by Zak Middleton in ue5-main branch]
2022-08-17 15:47:16 -04:00
henrik karlsson
e7eb15f0b9 [Runtime]
* TrackedActivity - Added sort value parameter when creating tracked activities
* WindowsConsoleOutputDevice2 - Added sorting of activities based on sort value.
* WindowsConsoleOutputDevice2 - Added show/hide timedate options to log context menu

#preflight 62fbbda3ad3bd8ad64558579
#rb self

#ROBOMERGE-AUTHOR: henrik.karlsson
#ROBOMERGE-SOURCE: CL 21409829 via CL 21416523 via CL 21416533 via CL 21416553
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v975-21357124)

[CL 21418243 by henrik karlsson in ue5-main branch]
2022-08-16 20:22:38 -04:00
Zak Middleton
80627edb67 #ue5 - Move ConvertArrayType and ConvertArrayTypeClampMax to UE::LWC namespace.
#jira none
#rb none
#preflight 62fc03232265303c4ba38780

[CL 21414621 by Zak Middleton in ue5-main branch]
2022-08-16 17:11:27 -04:00
steve robb
8d78668c12 Removed ignored calculated values from TBigInt::ToInt(), FGenericPlatformMallocCrash::InitializeSmallPools and FArchive::SerializeCompressedNew.
#rb robert.manuszewski
#preflight 62f3acf6e60c9215b9766648

#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 21406572 via CL 21406687 via CL 21406745
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v975-21357124)

[CL 21411875 by steve robb in ue5-main branch]
2022-08-16 15:29:48 -04:00
Jerome Delattre
cdfd801b47 Fix const in FAutomationTestBase::TestEqual function signatures
#jira UE-161113
#preflight 62fbb8fc1e39eb26a040c994
#rb Chris.Constantinescu

[CL 21409558 by Jerome Delattre in ue5-main branch]
2022-08-16 14:11:25 -04:00
roey borsteinas
15734bc58f Water: changed exclusion volume to exclude all by default.
#rb jonathan.bard

#ROBOMERGE-AUTHOR: roey.borsteinas
#ROBOMERGE-SOURCE: CL 21392605 via CL 21395578 via CL 21395729
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v975-21357124)

[CL 21399814 by roey borsteinas in ue5-main branch]
2022-08-15 21:47:47 -04:00
devin doucette
e71e54db74 Reverted unnecessary additions by IWYU
- Array.h is not needed by CompactBinarySerialization.h because the use of TArray is in a template function.
- SharedBuffer.h is not needed by DerivedData.h because its types are only used as return types or function parameters.
- FString and FCompositeBuffer are both declared in Fwd.h headers and do not need duplicate forward declarations.

#rb none
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 21391840 via CL 21394622 via CL 21395405
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v975-21357124)

[CL 21398955 by devin doucette in ue5-main branch]
2022-08-15 20:51:42 -04:00
ben woodhouse
f01fc33a83 Make a new RenderthreadCriticalPath stat which includes dependent waits. The new stat still excludes GPU occlusion query waits, the present wait and non-critical path waits (waiting for the game thread or RHI thread). Waits for tasks kicked on the GT are included though (unlike the existing stat).
The implementation extends the existing FThreadIdleStats to track critical path vs non-critical path waits for a thread.

The cvar r.RenderThreadTimeIncludesDependentWaits forces the main renderthread stat to use the new behavior, but this is disabled by default for historical tracking reasons.

#rb Nuno Leiria

#ROBOMERGE-AUTHOR: ben.woodhouse
#ROBOMERGE-SOURCE: CL 21386702 via CL 21387159 via CL 21387356 via CL 21391039 via CL 21391830
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v975-21357124)

[CL 21394348 by ben woodhouse in ue5-main branch]
2022-08-15 17:15:00 -04:00
christopher waters
0be910ed72 Adding SupportsRayTracing to platform properties. This is checked in addition to the project/platform settings for RayTracing but is opt-in per platform instead of always enabled if the setting is enabled.
This has the effect of reducing the number of platforms that say they support RayTracing which directly reduces the number of shader platforms that "support" RayTracing.

#jira none
#rb yuriy.odonnell
#preflight 62f43891b43215cf6c35e4b0

[CL 21391739 by christopher waters in ue5-main branch]
2022-08-15 15:16:19 -04:00
mark lintott
fd5207628a Fix for KeyChain Automated Test. It was not clear how this had not failed in past.
#rb pj.kack
#jira UE-160773
#preflight 62fa6a6bae3edb54c985d6ec

[CL 21388149 by mark lintott in ue5-main branch]
2022-08-15 12:25:38 -04:00
paul chipchase
8e736177e4 Virtualizing payloads when submitting via the editor will now correctly push the payloads to cache storage backends as well as persistent backends
#rb Per.Larsson
#jira UE-160943, UE-151671
#rnx
#preflight 62fa3334153b17e7462954b3

### Problem
- The virtualization process first checks to see if any of the local payloads are already stored in persistent storage and only try to submit those which aren't, which would mean if we are submitting a package with a local payload that is already in the persistent storage system but not in cached storage we have no way to cache it.
- This logic also introduced problems where filtered out payloads were being virtualized which was fixed with the addition of ENABLE_FILTERING_HACK which was not a robust long term solution.
- Checking if the payloads need to be pushed or not complicated the logic of the virtualization process and makes it harder to understand and make fixes too.

### Fix
- Removed code for ENABLE_FILTERING_HACK and UE_PRECHECK_PAYLOAD_STATUS from the virtualization process
- Removed some code loops from the virtualization process but we still end up with one loop finding all of the package trailers and a second loop setting up the FWorkspaceDomainPayloadProvider
-- This second loop will be removed in a future work item to avoid trying to push duplicate payloads (unless I end up doing that work at the virtualization manager level instead)
- We make one push for cached storage and another for persistent
-- Cached storage push failure will only result in a warning, failing the persistent push will error out as before
-- We need to reset the request states after the cache push. In a future work item we will likely allow a single push to specific both storage solutions, so I am leaving this code using the same set of requests for both pushes.

#robomerge FNMain

[CL 21386503 by paul chipchase in ue5-main branch]
2022-08-15 10:17:46 -04:00
chris constantinescu
0d0ad8e4c8 Remove faulty global GBlockLocalPrint, cleanup unused VS config
All platforms preflight 62f67851b66d5d9313f240b6
#rb Devin.Doucette
#preflight 62f67866bd746abb99c0be54

[CL 21362093 by chris constantinescu in ue5-main branch]
2022-08-12 15:45:37 -04:00
ben woodhouse
7db1565880 If the CSV Profiler is running, output the CSV GT/RT frame in the GT and RT frame named events rather than the engine frame numbers, and prefix with Csv.
#rb serge.bernier

#ROBOMERGE-AUTHOR: ben.woodhouse
#ROBOMERGE-SOURCE: CL 21355012 via CL 21355934 via CL 21355993 via CL 21356002
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)

[CL 21358177 by ben woodhouse in ue5-main branch]
2022-08-12 13:23:10 -04:00
Matt Peters
67556ef773 AssetDataTagMap: Fix FMapHandle::FindValue to perform a case-insensitive find when the the input FName is numberless. Change the runtime type for Numberless names to be FDisplayNameEntryId, which has a faster lookup of the comparision index than an FNameEntryId storing the display index.
#rb Johan.Torp
#rnx
#preflight 62f652761e61d1ba0e813167

[CL 21354415 by Matt Peters in ue5-main branch]
2022-08-12 09:40:48 -04:00
chris constantinescu
1f2a7d1ffc Fix
#rnx
#preflight skip

[CL 21335089 by chris constantinescu in ue5-main branch]
2022-08-11 09:29:08 -04:00
chris constantinescu
1bfe2da3f2 Use platform-dependent LocalPrint and make sure output is redirected to stdout when running LowLevelTests so that local and build machine test runs print debug and fault information directly to stdout.
AssertionMacrosTest is printing out failed asserts using LocalPrint which is undesirable - implemented GBlockLocalOutput as a way to supress LocalPrint output.
Other fixes included:
- ability to select a low level test build based on any configuration, not just Development: useful for Debug builds
- New "printoutput" LLT Gauntlet parameter used for certain platforms to control output redirect to stdout
#rb David.Harvey
#preflight 62f405a05a6f2fec99b64f21

[CL 21334255 by chris constantinescu in ue5-main branch]
2022-08-11 07:31:45 -04:00
paul chipchase
158dcbe0cc Change the VA graph name LocalStorageHierarchy to 'CacheStorageHierarchy' which better describes it.
#rb Per.Larsson
#jira UE-156189
#rnx
#preflight 62f4c098e60c9215b9bcde08

- The orignal name implied tha the payloads would only be stored locally on the users machine, but the intent is to describe a number of backends that are a) faster than the persistent storage backends b) no guarantee that the payload will be found.
- The new name better describes this functionality.
- We still accept 'LocalStorageHierarchy' but will log a warning informing the user to update their graph but this backwards compatibility code will most likely be removed before 5.1 ships.
-- EStorageType::Local will follow the usual deprecation rules.
- Not strictly related to this change but I also cleaned up and added additional loggng during the initialization of the virtualization manager.

[CL 21333601 by paul chipchase in ue5-main branch]
2022-08-11 05:51:29 -04:00