Commit Graph

687 Commits

Author SHA1 Message Date
danny couture
0790ec6eb0 Create a separate thread pool for the I/O portion of DDC requests to avoid clogging the workers with long I/O waits
Add queued work priority support to auto delete async tasks and schedule DDC Puts as Low priority
ThreadPool threads are now honoring the names they've been given on creation
Move the I/O only async DDC Get into the DDC ThreadPool with higher priority (Normal) than DCC Puts

#rb Devin.Doucette

[CL 15177897 by danny couture in ue5-main branch]
2021-01-25 10:55:26 -04:00
Marc Audy
bc88b73a29 Merge Release-Engine-Staging to Main @ CL# 15151250
Represents UE4/Main @ 15133763

[CL 15158774 by Marc Audy in ue5-main branch]
2021-01-21 16:22:06 -04:00
Arne Schober
1c9e0301fb U5 - temporarely disable the new Scheduler again after reinventing the way how it deals with background tasks. To get the changes tested again. The TaskGraph Backwardscompat layer will now also support Busy waiting.
[CL 15106154 by Arne Schober in ue5-main branch]
2021-01-15 05:53:24 -04:00
paul chipchase
f338370713 Fix the editor shutdown crash that was caused by CL 15049697 and re-enable the code which was disabled in CL 15052142
- In the original code we were checking if either of the queues were nullptr before using them however when those queues are deleted they were not actually being set to nullptr, so the checks would not catch this and eventually we would read trash data when trying to use the queues.
- Set both the queues to nullptr on shutdown so no attempt to access them will be made after this point.

#rb Danny.Couture
#rnx

[CL 15066339 by paul chipchase in ue5-main branch]
2021-01-13 08:47:01 -04:00
Devin Doucette
7d8efa31e4 DDC: Always initialize DDC in scenarios that do not require cooked content
This avoids a crash when the first use of DDC is from a worker thread when global shader map compilation is skipped due to use of the null RHI.

#jira UE-104924
#rb Zousar.Shaker

[CL 15039561 by Devin Doucette in ue5-main branch]
2021-01-11 13:54:30 -04:00
Marc Audy
bf80889353 UE5/Release-Engine-Staging to UE5/Main
This represents UE4/Main up to CL# 14958402

[CL 15028197 by Marc Audy in ue5-main branch]
2021-01-08 19:56:07 -04:00
Chris Gagnon
6ffd3241d2 Fix for crash when using the MessageLog in Development builds.
#rb Matt.Kuhlenschmidt

[CL 15014805 by Chris Gagnon in ue5-main branch]
2021-01-07 16:50:17 -04:00
geoff evans
72ac9aae1e Move up canonical setup of GIsEditor in the initialization of the engine. AppInit loads plugins which in turn make library function calls to things like the config system that want to know if it's an editor process running.
#jira UE-99558
#rb francis.hurteau

[CL 14915184 by geoff evans in ue5-main branch]
2020-12-14 14:28:39 -04:00
Marc Audy
ada7c144fa Merge //UE5/Release-Engine-Staging @14903491 to //UE5/Main
[CL 14906022 by Marc Audy in ue5-main branch]
2020-12-11 14:21:20 -04:00
Rolando Caloca
1854a7e4a7 UE5 - Show actual path that couldn't be made
#rb Josh.Adams
#rnx

[CL 14872554 by Rolando Caloca in ue5-main branch]
2020-12-07 15:48:16 -04:00
Richard Malo
a393d148c2 Changed IsRunningCookCommandlet to return value initialized when parsing the command line.
#rb patrick.enfedaque

[CL 14838613 by Richard Malo in ue5-main branch]
2020-12-02 16:40:40 -04:00
Arne Schober
9712441191 UE5 - This is the first step of an upcomming TaskGraph refactoring. New Frontends will be comming at a later time. The goal of this Step is to have a common Backend and prove its performance as well as stability. We have proven that the Taskpool and the TaskGraph can run on the same Backend. The Performance has been tested in Fortnite and is comparable on Android as well as PS4. We have completed all the Engine Test sucessfully, tested the Texture and Shader-compilation as well as cooking pipeline extensively and have run Reverb and Frosty. The Backend is disabled by default and can be enabled with -TaskGraphForceNewBackend Commandline option
[CL 14823215 by Arne Schober in ue5-main branch]
2020-11-30 16:27:34 -04:00
Matt Peters
be1c7b2bdc IPackageResourceManager: Fix crashes in !WITH_ENGINE programs: startup and shutdown need to be called outside of WITH_ENGINE blocks.
#rnx
#rb Catalin.Dragoiu

[CL 14815833 by Matt Peters in ue5-main branch]
2020-11-26 09:46:13 -04:00
Matt Peters
aae0fe62eb PackageResourceManager and PackagePaths
Create a new interface IPackageResourceManager that handles all attempts to load packages from storage. The default implementation passes through to loading from IFileManager. Future implementations will load from other services such as the EditorDomain and TargetDomain.
Add FPackagePath class that holds a LocalFilePath or LongPackageName, or a relative path to a package under a mounted content root (which can be converted into either the LocalFilePath or LongPackageName).
Modify LinkerLoad, BulkData, and AsyncLoader to use FPackagePath and IResourceManager.
Modify UPackage and FLinkerLoad to have a FPackagePath instead of a Filename.
#rb Paul.Chipchase, CarlMagnus.Nordin, Francis.Hurteau, Devin.Doucette
#rn Major Core

[CL 14814912 by Matt Peters in ue5-main branch]
2020-11-25 22:11:10 -04:00
Marc Audy
a7f9391231 Merge UE5/Release-Engine-Staging @ 14811410 to UE5/Main
This represents UE4/Main @ 14768117

For ReleaseObjectVersion.h
#lockdown Marcus.Wassmer

[CL 14811440 by Marc Audy in ue5-main branch]
2020-11-24 18:42:39 -04:00
Andriy Tylychko
2a3b4a94cb fixed stoping audio thread on exit: as AudioDeviceManager is released before audio thread stopped, this can lead to (subject of timing) an audio command executing after GAudioDeviceManager was set to nullptr, which causes null reference exception
#rb aaron.mcleran

[CL 14743995 by Andriy Tylychko in ue5-main branch]
2020-11-13 08:27:31 -04:00
danny couture
1c2d4922c7 Remove time limitation for MeshCards and DistanceFields since they are now extremely fast to update due to the recent removal of the FlushRenderingCommmands requirement
- Will help to converge a lot faster when thousands of small mesh are part of a scene
  - Will also reduce distance field atlas fragmentation due to improved batch ordering

#rb Francis.Hurteau

[CL 14734205 by danny couture in ue5-main branch]
2020-11-12 11:29:53 -04:00
danny couture
c23f6884fe Async Static Mesh Compilation / Loading
- Add protection against async property accessed during async build and postload.
   - Split PostLoad into 3 steps with the most part now being made async.
   - Make Build/BatchBuild API async when the feature is activated.
   - Add a new StaticMesh compilation manager. (This will be refactory later to reduce duplicated code with texture compiler).
   - Skip RenderState creation for any static mesh component still being built so they only show up when ready.
   - Fixed DistanceField and MeshCard computation that might trigger too soon if fixups are required to RenderData during PostLoad.
   - Dynamic priorisation for building and updating static meshes nearest to the viewport.
   - Implement different PIE modes, current default is to stall only for mesh that might affect nagivation/collision for players/bots.
   - Add a new generic interface for assets being built (still a WIP).
   - Add ability in FrontEnd filters to skip serialization of asset being async compiled and refresh when compilation finishes.
   - Prevent auto-save while textures and static meshes are being built (same as shaders)
   - Logic has been reordered in some Fortnite Building Component to avoid unnecessarily touching static mesh properties.

General Optimizations
   - Use cached thumbnails until shaders/textures/static meshes are ready to improve performance and avoid rendering incomplete thumbnails.

DEBUGGING
 - Can be forcibly enabled/disabled through command-line via -asyncstaticmeshcompilation=[off, on, paused]
 - Can pause staticmesh compilation using Editor.AsyncStaticMeshCompilation = 2 or -asyncstaticmeshcompilation=paused
 - Can manually resume a specified amount of paused compilation using Editor.AsyncStaticMeshCompilationResume [Num]
 - Can forcibly wait on all compilation using Editor.AsyncStaticMeshCompilationFlushAll

BENCHMARKS
 - 2m19s to 17.9s for Loading FortGPUTestbed's LumenTest with an empty local only DDC
 - 2h45m to 5mxxs for Loading Reverb's P_World with an empty local only DDC
 - 17m29 to 10m27s for Loading Apollo_Terrain_Edit with an empty local only DDC

TESTS
 - Loading maps from Reverb, Fortnite, ShooterGame, QAGame, FortGPUTestbed
 - Content browser interactions while still under heavy compilation
 - Importing with Datasmith / Dataprep
 - Working with the new Mesh Modeling Tool
 - Shutting down the editor while loading
 - Most of EngineTest Test Suite

REFERENCES
 - Design https://docs.google.com/document/d/1O4GI1G9AtQN6l0SaGFfXw0DyNhlLunLoEqne5INvxIQ
 - Documentation https://docs.google.com/document/d/1KCdFEMhhcsGwfgOisTVwlOwtsmEd7qbB0V6Tc39Gb10

#rb Francis.Hurteau

[CL 14688146 by danny couture in ue5-main branch]
2020-11-09 07:50:34 -04:00
john hable
32f8efc794 Chaning ShaderAutogen to make shader autogen code in FEngineLoop::PreInitPreStartupScreen, instead of when first shader is compiled.
#rb arciel.rekman
#jira ue-101762

[CL 14666446 by john hable in ue5-main branch]
2020-11-05 13:18:41 -04:00
danny couture
b14a910b92 Async Texture Compilation Improvements
- Update primitive component's relying on a texture to avoid GPU cached values to become stale (i.e. Lumen, Virtual Textures).
   - Reduce flickering during texture update by removing virtual texture flush as it is not required anymore with the previous fix.
   - Prioritize on screen textures even for nanite mesh and virtual textures by looking at "last seen" primitive component material's usage.
   - Force heighmap texture to be ready for PIE and -game to avoid falling through the landscape.

General Optimizations
   - Eliminated FlushRenderingCommands from both MeshCards/DistanceFields update to reduce heavy stuttering.
   - Reuse expensive ObjectIterator scans between MeshCards/DistanceFields/Shaders/Textures/StaticMesh during the same tick.

#rb Francis.Hurteau

[CL 14649969 by danny couture in ue5-main branch]
2020-11-03 22:22:30 -04:00
danny couture
1e415c4b85 Fix missing trace system shutdown when compiled without the engine causing missed event at end of application.
#rb Martin.Ridgers

[CL 14643787 by danny couture in ue5-main branch]
2020-11-03 13:28:13 -04:00
danny couture
3bdb7415f2 Reduce LargeThreadPool priority to be below TaskGraph's High Priority to improve general responsiveness under high load
#rb Francis.Hurteau

[CL 14641767 by danny couture in ue5-main branch]
2020-11-03 10:38:42 -04:00
Marc Audy
68150e0be7 Merge UE5/Release-Engine-Staging to UE5/Main @ 14611496
This represents UE4/Main @ 14594913

[CL 14612291 by Marc Audy in ue5-main branch]
2020-10-29 13:38:15 -04:00
john hable
01ede939c4 Fixing issue with creating directory when WITH_EDITOR is disabled.
#rb arciel.rekman

[CL 14571854 by john hable in ue5-main branch]
2020-10-26 00:48:44 -04:00
john hable
e77e89694e Fixing build issue with missing intermediary directory.
#rb arciel.rekman

[CL 14565474 by john hable in ue5-main branch]
2020-10-23 19:17:04 -04:00