Commit Graph

32 Commits

Author SHA1 Message Date
jon nabozny
87c451a756 Expose the ElementId from the RoundRobinHashTable's iterator, and stop spending so much time looking up the ID with costly hashes and comparisons when building Nanite material pass commands
#rb zach.bethel, ola.olsson
#lockdown michal.valient
#preflight 616ee1a2aa49f30001b90ead

#ROBOMERGE-OWNER: jon.nabozny
#ROBOMERGE-AUTHOR: jamie.hayes
#ROBOMERGE-SOURCE: CL 17863116 via CL 18004127 via CL 18370011 via CL 18370030
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18370137 by jon nabozny in ue5-release-engine-test branch]
2021-12-03 13:24:14 -05:00
jamie hayes
16d76f44df Refactor Nanite mesh command caching to remove the usage of RWLock and defer the registration of nanite materials to a serial operation on the RenderThread.
This improves performance of FPrimitiveSceneInfo::CacheNaniteMeshCommands from worst-case measurements of ~9ms to ~3ms

#rb ola.olsson, brandon.dawson
#lockdown michal.valient
#preflight 616d8af408cf4d00013f7a6a

#ROBOMERGE-AUTHOR: jamie.hayes
#ROBOMERGE-SOURCE: CL 17846248 via CL 18003588 via CL 18369608 via CL 18369702
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18369790 by jamie hayes in ue5-release-engine-test branch]
2021-12-03 13:04:36 -05:00
Marc Audy
0c3be2b6ad Merge Release-Engine-Staging to Test @ CL# 18240298
[CL 18241953 by Marc Audy in ue5-release-engine-test branch]
2021-11-18 14:37:34 -05:00
johan torp
3f3c413f23 Core constexprification pass to reduce code bloat, improve performance and simplify searching for non-constexpr constants
#rb steve.robb
#jira FORT-412107

#ROBOMERGE-AUTHOR: johan.torp
#ROBOMERGE-SOURCE: CL 17679994 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v875-17642767)

[CL 17680001 by johan torp in ue5-release-engine-test branch]
2021-09-30 13:05:39 -04:00
devin doucette
b06c7a60f1 Experimental UE::FLazyEvent that allocates an event only when necessary
#rb Andriy.Tylychko
#preflight 6148ec33286e3b0001f0f2b9

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 17608991 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)

[CL 17608999 by devin doucette in ue5-release-engine-test branch]
2021-09-23 11:48:38 -04:00
jason hoerner
52451a1a39 UE5_Main: Non-unity build fix, missing include in GrowOnlyLockFreeHash.h
#rb trivial
#jira none
#rnx

#ROBOMERGE-SOURCE: CL 17432679 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v868-17431974)

[CL 17432688 by jason hoerner in ue5-release-engine-test branch]
2021-09-04 17:12:56 -04:00
jason hoerner
110bd98b0a UE5: Optimizations when memory tracing is enabled: 5x perf increase with -llmcsv, 8x perf increase with -trace=memory.
#rb matt.peters johan.berg ionut.matasaru brandon.dawson jason.nadro
#rnx

Over half the perf gain was from reducing critical section locks, with the rest of the gains split between an optimization to call stack traversal (caching return address lookups in a lock free map), and enabling TLS related optimizations for MallocBinned2, which were inadvertently disabled when tracing was enabled (this also saves some locks).  Multiple lock types had to be optimized before measurable perf gains were observed, due to contention on remaining locks increasing as the first few locks were removed.  A total of 6 types of locks were removed or reduced:  AnnounceFNameTag, MallocBinned2, TagDataNameMap, Enum tag data lookup, Windows callstack trace, LLMMap.

* Added hash table utility class TGrowOnlyLockFreeHash which supports lock free reads, writes using a critical section, and no deletion.  This is intended for classes that represent caches of one-time initialized debug data used during memory tracing, which never needs to be freed.
* TGrowOnlyLockFreeHash applied to 4 sets/maps used when memory tracing is enabled, including tag data, announced tag names, call stack functions, and call stack IDs.
* Lock striping added to LLMMap.  This isn't a good candidate for a lock free approach, as it has a heavy amount of modification, and lock free approaches tend to perform worse than lock striping in that case, plus it would be a massive undertaking to make this lock free.
* A future lock to be removed would be the one in "FLowLevelAllocInfo::GetTag", protecting the "FLowLevelMemTracker::TagDatas" array, saving a couple percent more perf.
#preflight 6132a3a6bf137d00019a8c97

#ROBOMERGE-SOURCE: CL 17428762 via CL 17429451
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17429480 by jason hoerner in ue5-release-engine-test branch]
2021-09-03 20:58:47 -04:00
martins mozeiko
f12af98ed8 Enabled memory tracking with callstacks for PS4/5
Implementation details:
- PS4 & PS5 uses dwarf symbol format and uses Syms symbol resolver.
- To resolve symbols the path to folder where .self file is built currently must be specified in UE_INSIGHTS_SYMBOL_PATH env variable for Insights.
- Multiple paths can be separated by ; in this variable.
- Build for PS5 does not seem to have PLATFORM_PS5 define, I used defined(__PS5__).
- PS5 runtime collects and sends callstacks, but Syms resolver does not support dwarf v5 format yet, which is used on PS5 toolchain.

#rb none
#preflight 6112ead49c7bb10001bc63fc

#ROBOMERGE-SOURCE: CL 17128247 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17128270 by martins mozeiko in ue5-release-engine-test branch]
2021-08-10 20:07:09 -04:00
krzysztof narkowicz
2f55bc8719 Lumen - surface cache merging based on the RayTracingGroupId
r.LumenScene.SurfaceCache.MeshCardsMergeComponents - enable/disable
r.Lumen.Visualize.CardPlacementLOD - which LOD level to visualize (all, instances, merged instances, merged components)
r.Lumen.Visualize.CardPlacementPrimitives - visualize which primitives were used to merge

#ROBOMERGE-SOURCE: CL 16355257 in //UE5/Private-Frosty/... via CL 16355260
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v804-16311228)

[CL 16355272 by krzysztof narkowicz in ue5-release-engine-test branch]
2021-05-17 13:32:22 -04:00
Arne Schober
b2b27bcd1f U5 - Delete Resources on the RHI Thread to fix layering violation
[CL 16246026 by Arne Schober in ue5-main branch]
2021-05-09 23:20:16 -04:00
Arne Schober
bb8f86fea1 U5 - Remove controversal TryCancelAndLaunchContinuation in favor of just rolling all that functionallity into TryCancel as the Scheduler is not used anymore since an optimization where we run the Continuation inline in case the Task has not yet been launched. Also added TryExecute for cases where one just wants to run the Task inline and it will be executed if it has not yet been launched.
[CL 16223380 by Arne Schober in ue5-main branch]
2021-05-06 13:34:32 -04:00
Arne Schober
f7a923a7dc U5 - disable PVS Warnings
[CL 15171638 by Arne Schober in ue5-main branch]
2021-01-23 06:00:02 -04:00
Arne Schober
859010735e U5 - ported the UnitTests from the TaskStream to Main
[CL 15164673 by Arne Schober in ue5-main branch]
2021-01-22 13:02:11 -04:00
Arne Schober
5129dc01bb U5 - Experimental AwaitableTask. Awaitable tasks have a very simple interface: They basically only allow for launch and Await of Tasks. But Await is special it tries to reduce Wall time by running the task in the current context if it has not been started yet. Otherwise it will wait executing other Tasks. This interface is still experimental and the contract could change any time.
[CL 15086806 by Arne Schober in ue5-main branch]
2021-01-14 12:55:15 -04:00
Tim Smith
169584dcc6 Fixing PVS 7.7 Issues: warning V598: The 'Memcpy' function is used to copy the fields of 'XYZ' class. Virtual table pointer will be damaged by this.
#rb trivial
#jira UE-91644

[CL 15001868 by Tim Smith in ue5-main branch]
2021-01-06 15:54:11 -04:00
Arne Schober
58786eb676 UE5 - fix WinRT compile error
[CL 14897997 by Arne Schober in ue5-main branch]
2020-12-10 11:13:01 -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
Johan Berg
d6bdbfa8b2 Fix warnings in SherwoodTable implementation.
#rb yuriy.odonnell

[CL 14585291 by Johan Berg in ue5-main branch]
2020-10-27 04:35:34 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
Michal Valient
95d19f95b1 [REVERB] Merging //UE4/Private-Reverb-Development@13832732
#rb graham.wihlidal, rune.stubbe, brian.karis, andrew.lauritzen, jeff.farris

[CL 13834854 by Michal Valient in ue5-main branch]
2020-07-06 18:58:26 -04:00
Marc Audy
11f5b21210 Merging //UE5/Release-Engine-Staging @ 13752110 to Main (//UE5/Main)
#rnx

[CL 13753156 by Marc Audy in ue5-main branch]
2020-06-23 18:40:00 -04:00
arne schober
6a1aaf75cd Fix Compile error
#ROBOMERGE-SOURCE: CL 12673399 via CL 12673400 via CL 12673405
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)

[CL 12673408 by arne schober in Main branch]
2020-04-08 10:43:38 -04:00
sebastien lussier
e0dfa16d18 TRobinHoodHashMap - Change costly check to a checkSlow()
#rb arne.schober, ben.ingram, yoan.stamant

#ROBOMERGE-SOURCE: CL 12499584 via CL 12499588 via CL 12499591
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v673-12478461)

[CL 12499599 by sebastien lussier in Main branch]
2020-03-31 14:51:21 -04:00
arne schober
bf5d8ccd9c REL - This shallow copy of Create Snapshot causes the RobinHoodHashTable to leak it's support data structure as empty is not cleaning it up as it needs to be available to not polute the insertion loops with init guards.
#JIRA
#RB

#ROBOMERGE-SOURCE: CL 12117125 in //UE4/Release-4.25/... via CL 12117149
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v657-12064184)

[CL 12117174 by arne schober in Main branch]
2020-03-10 16:29:06 -04:00
Rolando Caloca
5b82f15def Copying //UE4/Dev-RenderPlat-Staging@11388153 to //UE4/Main
#rb none
#rnx

[CL 11388545 by Rolando Caloca in Main branch]
2020-02-12 13:27:19 -05:00