Using manual breadcrumbs to track mesh draw command sources.
Fixing issues caused by recursive Command List execution where the newer Command Lists would end up hiding the higher command lists in the breadcrumb dumps.
Cleaned up a few aspects of breadcrumbs, including moving some functionality to the proper classes.
#jira UE-115087
#rb zach.bethel, kenzo.terelst, mihnea.balta
#preflight 60a68bd57d6b06000180ca18
[CL 16407874 by christopher waters in ue5-main 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-SOURCE: CL 16311809 in //Fortnite/Main/... via CL 16311812 via CL 16314912 via CL 16314932
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Test -> Main) (v804-16311228)
[CL 16314939 by jonathan bard in ue5-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]
Use DEFINE_GPU_DRAWCALL_STAT macro instead of DEFINE_GPU_STAT to also get drawcall count in CSV for a specific pass.
SCOPED_GPU_STAT will then output CSV time for GPU pass and number of drawcalls of this GPU pass in CSV Drawcall category
#rb jian.ru, rolando.olivares
#ROBOMERGE-OWNER: mickael.gilabert
#ROBOMERGE-AUTHOR: mickael.gilabert
#ROBOMERGE-SOURCE: CL 11966987 via CL 11967000 via CL 11967012 via CL 11967030
#ROBOMERGE-BOT: (v656-11643781)
[CL 11967730 by mickael gilabert in Main branch]
#rnx
#rb none
#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870549 by ryan durand in Main branch]
#rb Ben.Woodhouse,Jonas.Meyer,Rolando.Caloca
#ROBOMERGE-SOURCE: CL 8375899 via CL 8380119
#ROBOMERGE-BOT: (v402-8361577)
[CL 8380167 by jian ru in Main branch]
#jira UE-76546
#rb marcus.wassmer
#ROBOMERGE-SOURCE: CL 7277248 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v369-7254125)
[CL 7277251 by michal valient in Main branch]