* Stat push/pop will still only execute when running on immediate command list (no behavior change), but code that uses non-RDG mechanism for GPU stats will now always compile
* Remove rendering thread check from FScopedGPUStatEvent::Begin/End (it is implied by immediate command list)
#rb mihnea.balta
#preflight 62cda559492f42e20304bb3a
[CL 21058431 by Yuriy ODonnell in ue5-main branch]
* Increased limit for GPU profiler events on D3D12. A typical frame with 4 view families would easily exhaust the old limit of 1K events resulting in many events not showing up in the profile -- limit increased to 8K, and confirmed negligible difference in memory. Fixed bug where we were only using half the queries allocated as well (unnecessary multiplication by 2 when calling RHICreateRenderQueryPool).
* Added optional "ProfileDescription" to FSceneViewFamily, which is appended to the Unreal Insights profile event names for both CPU and GPU, so you can differentiate view families.
* Infrastructure added to CPU profiler to allow a verbose name to be added to a Stat timing block.
* Infrastructure added to GPU profiler to allow verbose names to be added to timing blocks in general, both Event and Stat timing blocks.
* Added stats display for Display Cluster listing the CPU and GPU cost, and GPU assignment per view family by name, with the goal of allowing clients to tune features enabled per view family to adjust performance, without needing to gather performance information from Unreal Insights.
* FSceneRenderer::DoCrossGPUTransfers uses push transfer without lockstep (logic copied from 4.27), which significantly improves perf.
#rb zach.bethel marc.audy mihnea.balta
#jira none
#rnx
#preflight 61df4d23484d866ec01f17cf
#ROBOMERGE-AUTHOR: jason.hoerner
#ROBOMERGE-SOURCE: CL 18591295 in //UE5/Release-5.0/... via CL 18591308 via CL 18591324
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Test -> Main) (v899-18417669)
[CL 18591346 by jason hoerner in ue5-main branch]
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971
[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
- Refactored RDG to support free-threaded execution of passes.
- Refactored renderer to use specific RHI command list variants in pass lambda. Immediate command list passes are forced to stay on the render thread, while other variants can be parallelized.
#rb christopher.waters
#ROBOMERGE-SOURCE: CL 16838717 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)
[CL 16838724 by zach bethel in ue5-release-engine-test branch]
#ROBOMERGE-SOURCE: CL 16748765 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)
[CL 16749194 by martin ridgers in ue5-release-engine-test branch]
* Added game thread-only version of draw events in order to avoid the mistake of pushing a draw event on the main thread using an immediate command list, and popping it on the main thread later on, while the original command list may have been destroyed already.
* FDrawEvent is now able to be started/stopped on the game thread (no command list provided : a render command using the current immediate command list will be issued on both start and end) or the rendering/RHI threads (same as now : the command list passed in the start function will be the one used in the end function)
* Fixed potential similar issue with Begin/EndDrawCanvasToRenderTarget and DrawMaterialToRenderTarget BP functions
* Fixed potential similar issue with FGPUSkinCache end of frame updates (+ fixed FGPUSkinCache::BeginBatchDispatch being ifdefed-out by #if WANTS_DRAW_MESH_EVENTS)
#rb mihnea.balta, chris.waters, josie.yang
#jira none
#tests editor, PF
#p4v-cherrypick 16311819
#ROBOMERGE-OWNER: jonathan.bard
#ROBOMERGE-AUTHOR: jonathan.bard
#ROBOMERGE-COMMAND: _robomerge UE5-Main
#ROBOMERGE-SOURCE: CL 16311809 in //Fortnite/Main/... via CL 16311812 via CL 16314912
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v804-16311228)
#ROBOMERGE[STARSHIP]: UE5-Main
[CL 16314932 by jonathan bard in ue5-release-engine-test branch]
* Added CVar (r.GpuProfilerMaxEventBufferSizeKB) to control the GPU profiler scratch buffer's size (dynamically tweakable)
#rb ionut.mataseru
#jira none
#p4v-cherrypick 16221270
#ROBOMERGE-SOURCE: CL 16221260 in //Fortnite/Main/... via CL 16221263 via CL 16222503
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Main) (v796-16191650)
[CL 16222533 by jonathan bard in ue5-main branch]
Static analyzer always evaluates expressions in check(), despite DO_CHECK=0 due to implementation of check():
#define check(expr) { CA_ASSUME(expr); }
If checked expression depends on something that's wrapped in `#if DO_CHECK`, it will produce a compile error. The fix is to add USING_CODE_ANALYSIS condition where applicable.
#robomerge Release-5.0-EarlyAccess
#rb Steve.Robb
[CL 15527660 by Yuriy ODonnell in ue5-main branch]
#jira UE-89825
#ryi Yujiang.Wang, Arciel.Rekman
#rb none
#ROBOMERGE-SOURCE: CL 12167281 in //UE4/Release-4.25/... via CL 12167285
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v661-12148976)
[CL 12167294 by michael sartain in Main branch]
SanitizeEventTree was not clamping start times to be >= to previous root start times, so
we were hitting asserts in TraverseEventTree() for:
lastStartTime >= GpuProfilerEvents[Root].GetStartResultMicroseconds()
This CL should sanitize all start/end time values
#jira UE-89825
#rb Yujiang.Wang, Arciel.Rekman
[FYI] Brandon.Schaefer
#ROBOMERGE-SOURCE: CL 12142863 in //UE4/Release-4.25/... via CL 12142872
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v659-12123632)
[CL 12142890 by michael sartain in Main branch]
#rb trivial
#rnx
#ROBOMERGE-SOURCE: CL 11969245 via CL 11969250 via CL 11969256 via CL 11969258
#ROBOMERGE-BOT: (v656-11643781)
[CL 11969260 by mickael gilabert in Main branch]