- Detect duplicate start/stop capture requests. If a Start or Stop request is already pending as the next command in the queue, disregard repeat requests and emit a warning. This avoids an edge case where duplicate EndCapture calls would cause old metadata to be emitted
- Add IsEndCapturePending() method so calling code can check if there's a pending EndCapture before calling EndCapture (instead of just checking IsCapturing, which will be true if an EndCapture is pending).
[CL 25018952 by ben woodhouse in ue5-main branch]
- Minimize duration of locks around FStallDetector and FStallDetectorStats instances
- Remove some public access to FStallDetector and FStallDetectorStats instances and synchronization around them
- Remove Stat from UE::FStallDetectorStats::TabulatedResult for thread safety in case of stat lifetime ending (e.g. thread shutdown)
- Fire callbacks & call ReportStall outside of locks
- Add backtrace to stall detected callback
- Only fire 'stall detected' from background thread, only fire 'stall completed' from stalling thread
- Change delegates to threadsafe versions
- Add checks for length of stall scope name
- Execute ReportStall in a task
#rb francis.hurteau,logan.buchy
#jira UE-179587
[CL 24920944 by robert millar in ue5-main branch]
- Originally was added in CL24689238 but had to be removed for Static Analysis violation of an external file including a non-external file.
- Added EIGEN_UE_OVERRIDE_ALLOCATORS that define EIGEN_STD_MALLOC and EIGEN_STD_FREE.
- Moved FORCE_ANSI_ALLOCATOR from UMemoryDefines to Build.h because it needs to be defined earlier, also this seems to be where other defines like this live.
- Also tried to use stubs I made in Core but it had problems with CORE_API.
- Some builds were having problems with order and CORE_API was being defined to DLLIMPORT but DLLIMPORTwasn't always defined yet.
- New version actually follows the pattern used to override the new operators by using the module boilerplate macro.
- This will insert a copy of the stub function into each module which is fine since there will only be one version of FMemory.
#tests Built pretty much all targets (as non-unity also). Tested that allocations were going through the stub in Win64. Did as many Horde targets as I could.
[REVIEW] [at]dmytro.vovk [at]robert.millar [at]alex.nischwitz
[CL 24772972 by leigh mcrae in ue5-main branch]
* The subsystem adds a new toolbar widget in the level editor which changes to a notified state when a stall is detected.
* Clicking the widget brings up a tab with a table of the detected stall history. Each stall has some information that can be copied to a clipboard for users to dump the data into a issue ticket or chat message.
* NOTE: Currently iconography is all placeholders. Need UX pass to improve.
#jira UE-174529
#rb Brooke.Hubert
#preflight 6414f70632723d4a2081491c
#preflight 64189fb032723d4a204d20ac
[CL 24724541 by logan buchy in ue5-main branch]
Add a package field to the asset metadat scope, in addition to the existing asset name and object class fields.
#rb ionut.matasaru, josie.yang
#jira UE-157322
#preflight 64130a87a62aae9c87fa4c19
#preflight 641321e2760ee6afab7829b1
[CL 24670895 by Johan Berg in ue5-main branch]
By default csv metadata persists between captures which may be problematic if capturing different modes that have specific metadata since prior captures can pollute future ones.
This change adds a CSV_NON_PERSISTENT_METADATA macro which sets metadata that is cleared once the current capture ends.
For sake of review I've included the change to the FortLevelSaveComponent to update the creative metdata to use this macro. This will be submitted separately though.
#rb ben.woodhouse
[FYI] andrew.ladenberger
[CL 24436772 by tyler staples in ue5-main branch]
When launching a task, the metadata stack is captured at the calling site, and reapplied as a scope as soon as the task begins to execute. The macro that performed this reapplication was misnamed and didn't imply that it was actually creating a scope. This change removes the macro and adds a custom scope type which can be embedded in the inherited context for the task.
#rb ionut.matasaru, andriy.tylychko
#jira UE-167069
#preflight 63e64e153c247ccd13e986e4
[CL 24118353 by Johan Berg in ue5-main branch]
- MemoryTrace: Added CallstackId for all free events and also for HeapMarkAlloc, HeapUnmarkAlloc events.
- MemoryTrace: Increased trace version to 2.
#rb Johan.Berg
#preflight 63cab54dee564281cdc111bf
[CL 23790801 by ionut matasaru in ue5-main branch]