because UnrealPak as a program can't read project config hierarchy
#rb dan.thompson,josh.adams
#ROBOMERGE-AUTHOR: charles.bloom
#ROBOMERGE-SOURCE: CL 17464507 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)
[CL 17464538 by charles bloom in ue5-release-engine-test branch]
This is a defensive change to more uniformly gate conditions of various pathways that want to "nice" CPU consumption when the application is not the foreground application (doesn't "Have Focus"). In benchmarking scenarios we don't want a focus-grabbing application to cause change in behavior while taking performance measurements. This could be in local workstation benchmarking where other foreground apps will naturally come to the front or in data center build where antics that might otherwise be completely unknowable could impact benchmark measurements.
This change was formulated after finding some "nice" CPU conditionals that were instrumented, but not all of them are. This change aims to prevent having to instrument, profile, and mitigate each condition separately.
#rnx
#jira none
#rb francis.hurteau, brandon.schaefer
#preflight 611ec9248ff55400018d5018
#ROBOMERGE-AUTHOR: geoff.evans
#ROBOMERGE-SOURCE: CL 17463345 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)
[CL 17463757 by geoff evans in ue5-release-engine-test branch]
Make memory tag specs important so they don't get dropped before a trace connection is made.
Prevent Insights from crashing when opening a trace missing memory scopes or with missing scope specs.
Add a tooltip to symbol resolution noting the environment variable for symbol paths.
Allow Insights to capture full callstacks (including system modules) with the define UE_CALLSTACK_TRACE_FULL_CALLSTACKS or the command line argument -tracefullcallstacks on Windows.
#jira none
#rb ionut.matasaru, martin.ridgers
#ROBOMERGE-AUTHOR: robert.millar
#ROBOMERGE-SOURCE: CL 17461782 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)
#ROBOMERGE[bot1]: Dev-EngineMerge
[CL 17461823 by robert millar in ue5-release-engine-test branch]
#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]
- Image exposure is locally adjusted by decomposing luminance of the frame into a base layer and a detail layer.
- Base layer contrast can be reduced while preserving detail.
- Support blending with gaussian blurred luminance as proposed in Advances in Real-Time Rendering in Games 2021.
- Controls in PostProcessVolume.
- r.LocalExposure cvar to control whether local exposure is supported.
- Visualization mode in "Show->Visualize->Local Expsoure". Multiple modes controllable using r.LocalExposure.VisualizeDebugMode.
- Bilateral grid generation not yet optimized. Optimization should include increasing depth of grid to match histogram size so that global histogram can be generated from grid.
- Added option to use mirror address mode in PostProcessWeightedSampleSum, since black border adds noticeable vignetting to the blurred luminance.
#preflight 612f65169db3090001ba3eec
#rb Brian.Karis, Guillaume.Abadie, Krzysztof.Narkowicz
#ROBOMERGE-SOURCE: CL 17385317 via CL 17387198
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)
[CL 17387234 by tiago costa in ue5-release-engine-test branch]